把py转化成exe(干货)

问题提出:

  无奈别人的电脑没有装python编译环境,无法运行py文件。
  本教程为在window环境下,使用PyInstaller3.4将Python脚本打包成exe可执行程序。

使用命令:

pip install pyinstaller
在这里插入图片描述
  上图为成功安装效果图,由红色框框看出:pyinstaller需要有altgraph-0.16.1 future-0.17.1 macholib-1.11 pefile-2019.4.18 pyinstaller-3.4 pywin32-ctypes-0.2.0支持。

用法:

usage: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]
                   [--add-data <SRC;DEST or SRC:DEST>]
                   [--add-binary <SRC;DEST or SRC:DEST>] [-p DIR]
                   [--hidden-import MODULENAME]
                   [--additional-hooks-dir HOOKSPATH]
                   [--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES]
                   [--key KEY] [-d [{all,imports,bootloader,noarchive}]] [-s]
                   [--noupx] [-c] [-w]
                   [-i <FILE.ico or FILE.exe,ID or FILE.icns>]
                   [--version-file FILE] [-m <FILE or XML>] [-r RESOURCE]
                   [--uac-admin] [--uac-uiaccess] [--win-private-assemblies]
                   [--win-no-prefer-redirects]
                   [--osx-bundle-identifier BUNDLE_IDENTIFIER]
                   [--runtime-tmpdir PATH] [--bootloader-ignore-signals]
                   [--distpath DIR] [--workpath WORKPATH] [-y]
                   [--upx-dir UPX_DIR] [-a] [--clean] [--log-level LEVEL]
                   scriptname [scriptname ...]

  下文底部有详解。

常用的参数:

• -F 表示生成单个可执行文件。
• -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。
• -w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个。选项删除吧
• -c –console, –nowindowed 使用控制台,无界面(默认)。
• -p 表示你自己自定义需要加载的类路径,一般情况下用不到。
• -i 表示可执行文件的图标。

打包前:

在这里插入图片描述

  进入python需要打包的脚本所在目录,然后执行简单打包命令即可:

pyinstaller -F *.py

在这里插入图片描述
  会直接生成一个exe可执行文件。

运行结果:

在这里插入图片描述
  如果过程中出现某些问题,请自行google或者bing解决。

打包结果:

  打包完成后,进入到当前目录下,会发现多了build、dist、*.spec这四个文件夹或者文件,其中打包好的exe应用在dist目录下面,进入即可看到,可以把他拷贝到其他地方直接使用,如下图所示,是打包完成后的目录。
在这里插入图片描述

执行exe应用:

  因为是exe应用,是可执行文件了,所以直接双击运行即可。

进阶:

  还有其它你想要的功能可通过pyinstaller --help查看其他参数。

参数说明
optional arguments-hshow this help message and exit
-vshow this help message and exit
--distpath DIRWhere to put the bundled app (default: .\dist)
--workpath WORKPATHWhere to put all the temporary work files, .log, .pyzand etc. (default: .\build)
-y, --noconfirmReplace output directory (default: SPECPATH\dist\SPECNAME) without asking for confirmation
--upx-dir UPX_DIRPath to UPX utility (default: search the execution path)
-a, --asciiDo not include unicode encoding support (default: included if available)
--cleanClean PyInstaller cache and remove temporary files before building.
--log-level LEVELAmount of detail in build-time console messages. LEVEL,may be one of TRACE, DEBUG, INFO, WARN, ERROR, CRITICAL (default: INFO).
What to generate:-D, --onedirCreate a one-folder bundle containing an executable(default)
-F, --onefileCreate a one-file bundled executable.
--specpath DIRFolder to store the generated spec file (default:current directory)
-n NAME, --name NAMEName to assign to the bundled app and spec file(default: first script’s basename)
What to bundle, where to search:--add-data <SRC;DEST or SRC:DEST>Additional non-binary files or folders to be added to the executable. The path separator is platform specific, os.pathsep (which is ; on Windows and : on most unix systems) is used. This option can be used multiple times.
--add-binary <SRC;DEST or SRC:DEST>Additional binary files to be added to the executable. See the --add-data option for more details. This option can be used multiple times.
-p DIR, --paths DIRA path to search for imports (like using PYTHONPATH). Multiple paths are allowed, separated by ‘;’, or use this option multiple times
--hidden-import MODULENAME, --hiddenimport MODULENAMEName an import not visible in the code of the.script(s). This option can be used multiple times.
--additional-hooks-dir HOOKSPATHAn additional path to search for hooks. This option can be used multiple times.
--runtime-hook RUNTIME_HOOKSPath to a custom runtime hook file. A runtime hook is code that is bundled with the executable and is executed before any other code or module to set up special features of the runtime environment. This option can be used multiple times.
--exclude-module EXCLUDESOptional module or package (the Python name, not the path name) that will be ignored (as though it was not found). This option can be used multiple times.
--key KEYThe key used to encrypt Python bytecode.
How to generate:-d [{all,imports,bootloader,noarchive}], --debug [{all,imports,bootloader,noarchive}]Provide assistance with debugging a frozen application, by specifying one or more of the following choices.- all: All three of the below options; this is the default choice, unless one of the choices below is specified.- imports: specify the -v option to the underlying Python interpreter, causing it to print a message each time a module is initialized, showing the place (filename or built-in module) from which it is loaded. See https://docs.python.org/3/using/cmdline.html#id4. - bootloader: tell the bootloader to issue progress messages while initializing and starting the bundled app. Used to diagnose problems with missing imports.- noarchive: instead of storing all frozen Python source files as an archive inside the resulting executable, store them as files in the resulting output directory.
-s, --stripApply a symbol-table strip to the executable and shared libs (not recommended for Windows)
--noupxDo not use UPX even if it is available (works differently between Windows and *nix)
Windows and Mac OS X specific options:-c, --console, --nowindowedOpen a console window for standard i/o (default)
-w, --windowed, --noconsoleWindows and Mac OS X: do not provide a console window for standard i/o. On Mac OS X this also triggers building an OS X .app bundle. This option is ignored in *NIX systems.
-i <FILE.ico or FILE.exe,ID or FILE.icns>, --icon <FILE.ico or FILE.exe,ID or FILE.icns>FILE.ico: apply that icon to a Windows executable. FILE.exe,ID, extract the icon with ID from an exe. FILE.icns: apply the icon to the .app bundle on Mac OS X
Windows specific options:--version-file FILEadd a version resource from FILE to the exe
-m <FILE or XML>, --manifest <FILE or XML>add manifest FILE or XML to the exe
-r RESOURCE, --resource RESOURCEAdd or update a resource to a Windows executable. The RESOURCE is one to four items, FILE[,TYPE[,NAME[,LANGUAGE]]]. FILE can be a data file or an exe/dll. For data files, at least TYPE and NAME must be specified. LANGUAGE defaults to 0 or may be specified as wildcard * to update all resources of the given TYPE and NAME. For exe/dll files, all resources from FILE will be added/updated to the final executable if TYPE, NAME and LANGUAGE are omitted or specified as wildcard *.This option can be used multiple times.
--uac-adminUsing this option creates a Manifest which will request elevation upon application restart.
--uac-uiaccessUsing this option allows an elevated application to work with Remote Desktop.
Windows Side-by-side Assembly searching options (advanced):--win-private-assembliesAny Shared Assemblies bundled into the application will be changed into Private Assemblies. This means the exact versions of these assemblies will always be used, and any newer versions installed on user machines at the system level will be ignored.
--win-no-prefer-redirectsWhile searching for Shared or Private Assemblies to bundle into the application, PyInstaller will prefer not to follow policies that redirect to newer versions, and will try to bundle the exact versions of the assembly.
Mac OS X specific options:--osx-bundle-identifier BUNDLE_IDENTIFIERMac OS X .app bundle identifier is used as the default unique program name for code signing purposes. The usual form is a hierarchical name in reverse DNS notation. For example: com.mycompany.department.appname (default: first script’s basename)
Rarely used special options:--runtime-tmpdir PATHWhere to extract libraries and support files in ‘onefile’-mode. If this option is given, the bootloader will ignore any temp-folder location defined by the run-time OS. The `_MEIxxxxxx’-folder will be created here. Please use this option only if you know what you are doing.
--bootloader-ignore-signalsTell the bootloader to ignore signals rather than forwarding them to the child process. Useful in situations where e.g. a supervisor process signals both the bootloader and child (e.g. via a process group) to avoid signalling the child twice.

看我码这么多文字的份上点个赞再走啊~(❤ ω ❤)

  • 21
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值