pyinstaller用法详解3
本文使用创作助手。
大家好,时隔多日,我又更新了pyinstaller的用法详解!
当然,这一次要比之前更详细,十分详细。
谢谢大家的支持,我们现在开始!
一、快速开始使用pyinstaller
我之前的文章虽然不是十分详细,但是记载了pyinstaller的较详细用法,如果你赶时间,可以先去看看。
pyinstaller详解1http://t.csdnimg.cn/1Xqgh
pyinstaller用法详解2http://t.csdnimg.cn/cqqC1
二、准备工作
1.安装python
当然,既然要学pyinstaller,python肯定有,但是还是要提一下。
这是我之前的文章。
安装pythonhttp://t.csdnimg.cn/FqWUo但是,不要掉以轻心!!!
步骤很重要!
当你把安装包下载了以后,运行安装包以后会有一个安装界面,
底下勾选的“Add python to PATH”(好像是这样)最好勾选上。
2.安装pyinstaller、把pip、pyinstaller等添加到环境变量中
是的,关于这个,我之前也有文章讲。
添加到环境变量http://t.csdnimg.cn/EdPNp不过这个确实比较重要,我们详细说一下。
要将某个路径添加到系统环境变量中,可以按照以下步骤操作:
打开控制面板。
点击"系统和安全",然后点击"系统"。
在左侧面板中,点击"高级系统设置"。
在弹出的对话框中,点击"环境变量"。
在"系统变量"下方的列表中,选择"Path"变量,并点击"编辑"。
在弹出的编辑系统变量对话框中,点击"新建"。
输入要添加的路径,并点击"确定"。
最后,依次点击"确定"关闭所有打开的对话框。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/bicart/article/details/137198876
这是我的文章的原文。
其中我加粗的“输入要添加的路径”到底要输入什么呢?
我们要知道python的路径。
如果你知道,就可以往下翻。
1.点击键盘win键
2.在开始菜单中找python
就像这个:
点击它。
3.然后找IDIE。
就是圈中的这个。
4.点击它。
5.然后Ctrl+Shift+Esc打开任务管理器。
6.里面找到python。
7.右键,点击“打开文件所在位置”。
8.此时,你就看到了python所在的位置。
9.然后打开“Scripts”文件夹。
10.此时,复制路径。
就是圈中的路径。
把这个路径添加到环境变量中。
3.安装pyinstaller
键盘上win+R,输入cmd,回车。
然后输入:pip install pyinstaller
三、开始使用pyinstaller
1.使用前的一些学习
首先,你要知道,即将说的类似于“pyinstaller 123.py”这些东西要输入到哪里。
打开你要打包的python文件所在的文件夹。
左键那个红圈的地方。也就是路径处。
我们可以看到,路径被选中了。
然后删了,也就是点删除键(键盘上的Backspace)。
输入cmd,回车。
然后就在出现的黑色的这个界面里面输入下面讲的指令(或者说是别的什么名字的东西)。
2.什么是pyinstaller?它能干什么?
现在说这个确实有点迟。
PyInstaller是一个将Python程序转换为独立可执行文件的程序,这意味着您可以将Python应用作为可执行文件分发,而无需用户安装Python。PyInstaller将Python解释器以及所需的依赖项和模块捆绑到一个单独的可执行文件中。
要使用PyInstaller,首先需要安装它。您可以在终端中运行以下命令使用pip进行安装(前面讲过了):
pip install pyinstaller
安装完成后,您可以进入Python脚本所在的目录,并使用PyInstaller创建可执行文件。基本命令如下:
pyinstaller your_script.py
将your_script.py
替换为您的Python脚本的名称。PyInstaller会分析脚本,检测依赖项,并在相同目录中创建一个独立的可执行文件。
PyInstaller还提供了各种选项和参数,您可以使用它们来自定义生成的可执行文件的行为和外观。您可以参考PyInstaller的文档了解这些选项的更多详细信息。
请注意,PyInstaller可能无法捆绑某些依赖项,特别是如果它们是复杂的或需要特定于平台的库。在这种情况下,您可能需要手动包含这些依赖项或寻找替代解决方案。
总体而言,PyInstaller是一个非常有用的工具,可以将Python应用程序轻松分发为独立的可执行文件,让用户更方便地运行您的程序,而无需安装Python或其他依赖项。
四、pyinstaller的使用
PyInstaller是一个功能强大的Python程序打包工具,可以将Python脚本转换为独立的可执行文件。除了基本的命令行用法之外,PyInstaller还提供了一些选项和参数,用于自定义和优化生成的可执行文件。以下是一些常用的PyInstaller使用方法和选项:
-
基本用法:
pyinstaller your_script.py
将
your_script.py
替换为您的Python脚本的名称。PyInstaller将分析脚本并在相同目录中生成一个可执行文件。 -
指定输出目录:
pyinstaller --distpath /path/to/output your_script.py
使用
--distpath
参数指定生成的可执行文件的输出目录。 -
指定生成的可执行文件的名称:
pyinstaller --name my_app your_script.py
使用
--name
参数指定生成的可执行文件的名称。 -
添加数据文件或目录:
pyinstaller --add-data "path/to/data;./data" your_script.py
使用
--add-data
参数将数据文件或目录包含在生成的可执行文件中。 -
指定生成的可执行文件的图标:
pyinstaller --icon=path/to/icon.ico your_script.py
使用
--icon
参数指定生成的可执行文件的图标。 -
设置运行时选项:
pyinstaller --runtime-hook=path/to/runtime_hook.py your_script.py
使用
--runtime-hook
参数指定运行时选项,可以通过编写一个运行时钩子脚本来配置选项。 -
指定打包的Python解释器:
pyinstaller --python=/path/to/python your_script.py
使用
--python
参数指定要打包的Python解释器的路径。 -
包含第三方模块:
pyinstaller --hidden-import module_name your_script.py
使用
--hidden-import
参数指定要包含的第三方模块。 -
调试模式:
pyinstaller --debug your_script.py
使用
--debug
参数生成调试模式下的可执行文件。 -
清理生成的临时文件:
pyinstaller --clean your_script.py
使用
--clean
参数清理生成的临时文件。
这些是一些常用的PyInstaller用法和选项,您可以根据需要选择适合您的情况并进行自定义配置。您可以通过运行pyinstaller --help
命令查看所有可用选项和参数的完整列表。
当使用PyInstaller打包Python脚本时,可以使用一系列选项和参数实现更详细的定制。以下是一些常用的选项和参数的详细说明:
-
--onefile:将所有依赖项合并到一个单独的可执行文件中。默认情况下,PyInstaller会生成一个包含Python解释器和依赖项的目录。使用此选项可以生成一个单独的可执行文件,更方便分发和使用。
-
--windowed:生成一个无控制台窗口的可执行文件。默认情况下,PyInstaller会生成一个带有控制台窗口的可执行文件。使用此选项可以生成一个没有控制台窗口的可执行文件,适用于GUI应用程序。
-
--clean:清理生成的临时文件。PyInstaller在打包过程中会生成一些临时文件,使用此选项可以在打包完成后进行清理。
-
--exclude-module module_name:排除不需要的模块。使用此选项可以排除不需要打包的模块,以减小生成的可执行文件的大小。
-
--add-binary src_path:dst_path:将二进制文件添加到生成的可执行文件中。使用此选项可以将指定的二进制文件添加到生成的可执行文件中,可以是库文件、数据文件等。src_path是源文件的路径,dst_path是生成的可执行文件中的路径。
-
--upx:使用UPX压缩可执行文件。UPX是一个可执行文件压缩工具,使用此选项可以在生成可执行文件时对其进行压缩,减小文件大小。
-
--hidden-import module_name:手动指定要导入的模块。有时PyInstaller无法自动检测到某些依赖模块,使用此选项可以手动指定要导入的模块。
-
--runtime-tmpdir path:设置运行时临时目录。PyInstaller在运行时可能需要创建临时文件,使用此选项可以指定运行时临时目录的路径。
-
--distpath path:指定生成的可执行文件的输出目录。使用此选项可以指定生成的可执行文件存放的目录。
-
--specpath path:指定.spec文件的输出路径。.spec文件是PyInstaller的配置文件,使用此选项可以指定.spec文件的输出路径。
这些是一些常用的PyInstaller选项和参数,可以根据需要进行选择和配置。您可以在PyInstaller的官方文档中找到更详细的说明和更多可用选项的介绍。
当使用PyInstaller进行打包时,可以使用上述提到的选项和参数以及其他一些选项来进一步定制和优化生成的可执行文件。以下是一些更详细的说明:
-
--name name:指定生成的可执行文件的名称。默认情况下,PyInstaller根据脚本文件的名称生成可执行文件的名称,可以使用此选项来指定一个自定义的名称。
-
--icon icon_file:为生成的可执行文件添加图标。可以使用此选项来指定一个图标文件,该图标文件将被添加到生成的可执行文件中。
-
--noconsole:生成一个没有控制台窗口的可执行文件。与--windowed选项相似,但--noconsole选项还允许在运行可执行文件时显示控制台窗口,这对于调试和日志记录很有用。
-
--workpath path:指定工作目录的路径。工作目录是PyInstaller执行过程中使用的临时文件夹,包括日志文件和缓存文件等。使用此选项可以指定工作目录的路径。
-
--hidden-import package.module.submodule:手动导入指定的子模块。有时PyInstaller无法自动检测到某些子模块,您可以使用此选项来手动导入这些子模块,确保它们被正确打包。
-
--exclude-module package.module:排除不需要打包的模块。使用此选项可以指定要排除的模块,确保它们不会被打包进生成的可执行文件中。
-
--runtime-hook hook_script:指定一个运行时钩子脚本。运行时钩子脚本可以在打包过程中执行特定操作,例如修改导入路径或添加动态链接库等。
-
--add-data path_to_files:destination:将指定的文件或目录添加到生成的可执行文件中。可以使用此选项将必要的数据文件和资源文件添加到可执行文件中,例如图像、配置文件等。path_to_files是文件或目录的路径,destination是生成的可执行文件中的路径。
-
--add-hook-dir hook_script_directory:指定一个目录,其中包含运行时钩子脚本。使用此选项可以指定一个目录,其中包含多个运行时钩子脚本,这些脚本将在打包过程中执行。
-
--debug:生成调试版本的可执行文件。使用此选项可以生成带有调试信息的可执行文件,方便在调试时进行分析。
通过使用这些选项和参数,您可以更加详细和灵活地配置PyInstaller的打包过程,满足您的特定需求。请注意,不同版本的PyInstaller可能具有不同的选项和参数,建议查阅官方文档以获取最新信息和更详细的说明。
在使用PyInstaller进行打包时,有时可能会遇到一些常见的问题。下面是一些可能出现的问题以及对应的解决方案:
-
导入错误:有时PyInstaller无法正确地检测和打包依赖项,导致在运行可执行文件时出现导入错误。解决方法是使用
--hidden-import
选项手动导入缺失的模块或子模块。 -
缺失DLL文件:如果可执行文件在其他计算机上运行时出现缺失DLL文件的错误,可能是由于PyInstaller无法自动识别并打包依赖的动态链接库。解决方法是使用
--add-binary
选项手动添加缺失的DLL文件。 -
体积过大:生成的可执行文件体积过大,可能是由于包含了不必要的依赖项或资源文件。可以使用
--exclude-module
选项排除不需要打包的模块,并使用--add-data
选项只添加必要的资源文件。 -
无法删除临时文件:在使用PyInstaller打包时,可能会因为权限问题或文件占用导致无法删除临时文件,从而产生错误。解决方法是确保在运行打包命令之前关闭相关应用程序或进程,以便释放对文件的占用。
-
多个Python版本冲突:如果系统中安装了多个Python版本,并且在运行PyInstaller时出现错误,可能是因为环境变量或路径设置不正确。解决方法是确保正确设置和配置Python环境变量和路径,并使用正确的Python版本运行PyInstaller。
-
无法正确打包特殊文件类型:某些特殊类型的文件,如动态链接库、二进制文件或加密文件等,可能无法正确打包。解决方法是使用
--add-binary
选项手动添加这些文件,并确保在打包时正确的引用它们。
这些是一些可能遇到的常见问题和解决方法,然而,由于每个项目和环境的不同,您可能会遇到其他问题。对于更具体的问题,建议参考官方文档、论坛或社区以获取帮助和支持。
依赖项问题:某些第三方库可能无法正确地打包或运行,可能需要手动解决依赖关系和环境变量问题。您可以使用 -p 选项将附加 Python 模块的路径包含到打包中,可以使用 --hidden-import 选项导入没有被自动检测到的模块。
忽略文件问题:默认情况下,PyInstaller 会自动检测并包含您的代码中使用的文件和资源。但是,有时您可能需要手动指定要包含的文件或目录。您可以使用 -p 选项添加额外路径,并使用 --add-data 选项来指定要包含的文件和目录。
杀毒软件问题:一些杀毒软件可能会将打包生成的可执行文件视为潜在的恶意软件。如果遇到此问题,您可以尝试将打包生成的文件添加到杀毒软件的信任列表中。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/bicart/article/details/137204897
这是我引用的一小段我自己的文章。
这些是使用 PyInstaller 进行打包的基本步骤和选项。当然,PyInstaller 还提供了更多高级选项和功能,如自定义打包和生成可执行文件的行为等。您可以参阅官方文档以了解更多详细信息:https://pyinstaller.readthedocs.io/
在PyInstaller中,spec文件是用于定义打包过程的配置文件。通过编辑spec文件,您可以更精确地控制打包过程,包括指定入口文件、依赖项、数据文件、图标等。下面是使用spec文件进行打包的详细步骤:
-
创建spec文件:首先,使用PyInstaller命令行创建一个spec文件。在命令行输入以下命令来生成spec文件:
pyi-makespec your_script.py
这将在当前目录下生成一个名为
your_script.spec
的spec文件,其中your_script.py
是您要打包的主要Python脚本。 -
编辑spec文件:打开生成的spec文件,可以使用任何文本编辑器进行编辑。spec文件是一个Python脚本,其中包含了各种打包选项和配置。您可以根据需要编辑以下部分:
exe
部分:用于指定生成的可执行文件的名称、图标、版本等信息。您可以通过设置icon
属性指定图标文件路径。a
部分:用于指定附加文件,例如数据文件、配置文件等。您可以使用datas
属性添加需要打包的数据文件。hiddenimports
部分:用于指定需要手动导入的模块或库。您可以使用hiddenimports
属性手动添加缺失的模块。- 其他部分:您还可以根据需要编辑其他部分,例如
excludes
、hookspath
等。
-
运行打包命令:编辑完成spec文件后,使用PyInstaller命令行运行打包命令。在命令行中输入以下命令:
pyinstaller your_script.spec
这将根据spec文件的配置,将Python脚本打包成一个可执行文件。打包完成后,可执行文件将生成在与spec文件同级的
dist
目录下。
以上是使用spec文件进行打包的详细步骤。通过编辑spec文件,您可以更精确地控制打包过程,并配置各种选项来满足项目的需求。在编辑spec文件时,可以参考官方文档和PyInstaller的示例以获取更多的帮助和指导。
以下是一个示例spec文件的内容:
# -*- mode: python ; coding: utf-8 -*-block_cipher = Nonea = Analysis(['your_script.py'],pathex=['/path/to/your_script_directory'],binaries=[],datas=[('/path/to/data_file.csv', '.')],hiddenimports=[],hookspath=[],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)pyz = PYZ(a.pure, a.zipped_data,cipher=block_cipher)exe = EXE(pyz,a.scripts,exclude_binaries=True,name='your_script',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=True,icon='your_icon.ico')coll = COLLECT(exe, a.binaries, a.zipfiles,a.datas, strip=None, upx=True,name='dist/your_script')app = BUNDLE(coll,name='your_script.app',icon='your_icon.icns',bundle_identifier='com.yourcompany.your_script')
在这个例子中,your_script.py
是要打包的主要Python脚本。/path/to/data_file.csv
是要打包的数据文件路径。
您可以根据您的需求进行修改。例如,您可以通过更改name
属性来指定生成的可执行文件的名称。您还可以使用hiddenimports
属性手动添加缺失的模块。
编辑完spec文件后,通过运行以下命令进行打包:
pyinstaller your_script.spec
打包完成后,可执行文件将生成在与spec文件同级的dist
目录下。
请注意,这只是一个简单的示例,您可以根据实际需求修改和调整spec文件的其他部分。更多关于spec文件的详细信息和选项,请参考PyInstaller的官方文档。
下面是关于 PyInstaller 的一些常用参数的说明:
-
-w
:禁用控制台窗口,生成一个无终端界面的可执行文件。pyinstaller -w script.py
-
-c
:生成一个带有控制台窗口的可执行文件,当程序运行时会打开一个终端窗口。pyinstaller -c script.py
-
--onefile
:生成一个单个的可执行文件,而不是生成一个包含多个文件和文件夹的文件夹。pyinstaller --onefile script.py
-
--icon
:指定一个图标文件给可执行文件。pyinstaller --icon=icon.ico script.py
-
--name
:指定生成的可执行文件的名称。pyinstaller --name=myapp script.py
-
--add-data
:指定要将其他文件添加到打包后的可执行文件中。pyinstaller --add-data='data.txt:.' script.py
这将在生成的可执行文件所在的目录复制
data.txt
文件。 -
--add-binary
:指定要将二进制文件添加到打包后的可执行文件中。pyinstaller --add-binary='lib.so:.' script.py
这将在生成的可执行文件所在的目录复制
lib.so
文件。 -
--exclude-module
:指定要从打包后的可执行文件中排除的模块。pyinstaller --exclude-module=tkinter script.py
这将排除
tkinter
模块,不包含在生成的可执行文件中。
这些参数可以通过在命令行中使用它们来定制你的 PyInstaller 打包过程。你可以根据你的需要选用这些参数,并根据具体的场景做进一步的调整。
五、一些建议
当使用 PyInstaller 进行打包时,以下是一些建议:
-
确保所有依赖项都已正确安装:在打包之前,确保你的项目中所需的所有依赖项都已正确安装。这包括 Python 模块、第三方库和其他必需的软件。
-
使用虚拟环境:为了避免依赖冲突和混乱,建议在打包之前使用虚拟环境。这将确保打包时只包含项目所需的依赖项,并且不会与全局的 Python 环境冲突。
-
测试可执行文件:在发布可执行文件之前,确保对其进行测试。运行可执行文件,并确保它在不同环境和操作系统上都能正常工作。
-
处理文件路径:当你的脚本涉及到文件操作时,要特别注意文件路径的处理。在打包后,文件路径可能会有所变化,因此要确保你的脚本使用的是相对路径或动态获取路径的方式。
-
处理资源文件:如果你的项目中包含资源文件(如图像、字体、配置文件等),使用
--add-data
参数将它们添加到打包后的可执行文件中。这样,生成的可执行文件将包含所有的必要资源。 -
考虑不同操作系统的兼容性:如果你的程序需要在不同的操作系统上运行,要考虑适应不同的操作系统。例如,对于图标文件,可以为不同的操作系统提供不同的图标格式以确保良好的兼容性。
-
更新 PyInstaller 版本:定期检查 PyInstaller 的最新版本,并确保使用的是最新版本。新版本通常会修复一些已知的问题并提供更好的性能和功能。
-
参考官方文档和社区支持:如果遇到问题或需要更多帮助,可以参考 PyInstaller 的官方文档和社区支持。官方文档提供了详细的使用说明和示例,而社区支持可以帮助解决一些特定的问题和提供额外的技巧。
希望这些建议对你使用 PyInstaller 进行打包有所帮助!
相关文章:

pyinstaller用法详解3
本文使用创作助手。 大家好,时隔多日,我又更新了pyinstaller的用法详解! 当然,这一次要比之前更详细,十分详细。 谢谢大家的支持,我们现在开始! 一、快速开始使用pyinstaller 我之前的文章…...

养猫新手不会挑智能猫砂盆?2024最新挑选干货分享!
不得不说智能猫砂盆真的帮了我很大的忙,四年以来我陆陆续续养了很多的猫咪,但是因为需要上班,所以有时候也对铲屎的工作有些力不从心,后面听了朋友的建议,去入手了智能猫砂盆,不得不说买智能猫砂盆也非常的…...

上海理工大学24计算机考研考情分析!初复试分值比55:45,复试逆袭人数不算多!
上海理工大学(University of Shanghai for Science and Technology),位于上海市,是一所以工学为主,工学、理学、经济学、管理学、文学、法学、艺术学等多学科协调发展的应用研究型大学;是上海市属重点建设大…...
Pandas库学习之DataFrame.drop()函数
Pandas库学习之DataFrame.drop()函数 一、简介 DataFrame.drop 是 Pandas 库中一个非常实用的函数,用于删除 DataFrame 中的行或列。通过指定列名或行索引,可以灵活地从数据集中移除不需要的数据。这对于数据清洗和预处理非常有用。 二、语法和参数 D…...
WHAT - 介绍一个不太一样的 UI 组件库 shadcn/ui
目录 一、介绍主要特点核心组件示例代码社区和支持总结 二、copy/paste1. 高度可定制性2. 避免依赖锁定3. 学习和理解4. 简化调试5. 项目需求变化 官方文档:https://ui.shadcn.com/docs 一、介绍 ShadCN (ShadCN/UI) 是一个现代的 React 组件库,旨在提…...

python--实验 11 模块
目录 知识点 模块基础 模块使用方式 自定义模块示例 模块的有条件执行 Python包结构 定义和导入包 常用第三方库及安装 实例代码 第三方库自动安装脚本 Python标准库介绍 PyInstaller 小结 实验 1.(基础题)制作文本进度条。 2.(基础题) 蒙特卡罗方法计算圆周率…...

Vue3+Vite+TS+Axios整合详细教程
1. Vite 简介 Vite是新一代的前端构建工具,在尤雨溪开发Vue3.0的时候诞生。类似于Webpack Webpack-dev-server。其主要利用浏览器ESM特性导入组织代码,在服务器端按需编译返回,完全跳过了打包这个概念,服务器随起随用。生产中利用…...

【深度学习入门篇 ⑨】循环神经网络实战
【🍊易编橙:一个帮助编程小伙伴少走弯路的终身成长社群🍊】 大家好,我是小森( ﹡ˆoˆ﹡ ) ! 易编橙终身成长社群创始团队嘉宾,橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官…...

宝塔安装RabbitMq教程
需要放开15672端口,默认账号密码为guest/guest...

韦东山嵌入式linux系列-驱动进化之路:设备树的引入及简明教程
1 设备树的引入与作用 以 LED 驱动为例,如果你要更换LED所用的GPIO引脚,需要修改驱动程序源码、重新编译驱动、重新加载驱动。 在内核中,使用同一个芯片的板子,它们所用的外设资源不一样,比如A板用 GPIO A,…...
长轮询(Long Polling)实现原理和java代码示例
长轮询(Long Polling)背景 长轮询是一种在Web开发中常用的技术,用于实现服务器与客户端之间的即时通信或近乎实时的数据交换。在传统的轮询(Polling)中,客户端会定期向服务器发送请求以检查是否有新数据。…...

OWASP 移动应用 2024 十大安全风险
1. OWASP 移动应用 2024 十大安全风险 开放全球应用程序安全项目 (OWASP) 是一个非营利性基金会,致力于提高软件的安全性。自 2014、2016 年两次发布了移动应用的十大风险后,今年再次发布2024版。这对移动应用软件的检查工具有着…...

Qt界面假死原因
创建一个播放器类,继承QLabel,在播放器类中起一个线程用ffmpeg取流解码,将解码后的图像保存到队列,在gui线程中调用update()刷新显示。 当ffmpeg打开视频流失败后调用update()将qlabel刷新为黑色,有一定概率会使得qla…...

python调用MATLAB出错matlab.engine.MatlabExecutionError无法调用MATLAB函数报错
python调用MATLAB出错matlab.engine.MatlabExecutionError无法调用MATLAB函数报错 说明(废话)解决方案MATLAB异常乱码python矩阵转MATLAB矩阵matlab.engine.MatlabExecutionError 说明(废话) python调用MATLAB,调用m文件中的函数,刚开始都没有问题&…...

[GXYCTF2019]Ping Ping Ping1
打开靶机 结合题目名称,考虑是命令注入,试试ls 结果应该就在flag.php。尝试构造命令注入载荷。 cat flag.php 可以看到过滤了空格,用 $IFS$1替换空格 还过滤了flag,我们用字符拼接的方式看能否绕过,ag;cat$IFS$1fla$a.php。注意这里用分号间隔…...

成为git砖家(1): author 和 committer 的区别
大家好,我是白鱼。一直对 git author 和 committer 不太了解, 今天通过 cherry-pick 的例子搞清楚了区别。 原理 例如我克隆了著名开源项目 spdlog 的源码, 根据某个历史 commit A 创建了分支, 然后 cherry-pick 了这个 commit …...
Lianwei 安全周报|2024.07.15
新的一周又开始了,以下是本周「Lianwei周报」,我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件,保证大家不错过本周的每一个重点! 政策/标准/指南最新动态 01 《人工智能全球治理上海宣言》发布 我们强调共同促…...

Linux - 基础开发工具(yum、vim、gcc、g++、make/Makefile、git、gdb)
目录 Linux软件包管理器 - yum Linux下安装软件的方式 认识yum 查找软件包 安装软件 如何实现本地机器和云服务器之间的文件互传 卸载软件 Linux编辑器 - vim vim的基本概念 vim下各模式的切换 vim命令模式各命令汇总 vim底行模式各命令汇总 vim的简单配置 Linux编译器 - gc…...
Git使用介绍教程
Git使用介绍教程 小白第一次写博客,内容写的可能不是很详细,仅供参考,大家一起努力 gitee网址:https://gitee.com 大部分的开发团队都以 Git 作为自己的版本控制工具,需要对 Git 的使用非常的熟悉。这篇文章中本人整理了自己在开发过程中经常使用到的 Git 命令,方便在偶…...

STM32的TIM1之PWM互补输出_死区时间和刹车配置
STM32的TIM1之PWM互补输出_死区时间和刹车配置 1、定时器1的PWM输出通道 STM32高级定时器TIM1在用作PWM互补输出时,共有4个输出通道,其中有3个是互补输出通道,如下: 通道1:TIM1_CH1对应PA8引脚,TIM1_CH1N对应PB13引…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...

Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...