将Python脚本打包成可执行文件

Posted 隔壁老梁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Python脚本打包成可执行文件相关的知识,希望对你有一定的参考价值。

安装PyInstaller

对于那些网络比较稳定,能够流畅使用pip源地址的用户,直接下面的命令就可以搞定:

pip install pyinstaller

通常我们会下载源码包,然后进入包目录,执行下面的命令(需要安装setuptools):

python setup.py install
 

对于其他安装选项,请参阅手册和PIP用户指南。

安装当前开发版本使用:

pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz

安装完后,检查安装成功与否:

pyinstaller --version

安装成功后,就可以使用下面的命令了:

  • pyinstaller : 打包可执行文件的主要命令,详细用法下面会介绍。
  • pyi-archive_viewer : 查看可执行包里面的文件列表。
  • pyi-bindepend : 查看可执行文件依赖的动态库(.so或.dll文件)
  • pyi-... : 等等。

在执行pyInstaller命令的时候,会在和脚本相同目录下,生成一个.spec文件,该文件会告诉pyinstaller如何处理你的所有脚本,同时包含了命令选项。一般我们不用去理会这个文件,若需要打包数据文件,或者给打包的二进制增加一些Python的运行时选项时...一些高级打包选项时,需要手动编辑.spec文件。可以使用:

pyi-makespec options script [script ...]

使用PyInstaller

pyinstaller的语法:

pyinstaller [options] script [script ...] | specfile

最简单的用法,在和myscript.py同目录下执行命令:

pyinstaller mycript.py

然后会看到新增加了两个目录build和dist,dist下面的文件就是可以发布的可执行文件,对于上面的命令你会发现dist目录下面有一堆文件,各种都动态库文件和myscrip可执行文件。有时这样感觉比较麻烦,需要打包dist下面的所有东西才能发布,万一丢掉一个动态库就无法运行了,好在pyInstaller支持单文件模式,只需要执行:

pyinstaller -F mycript.py

你会发现dist下面只有一个可执行文件,这个单文件就可以发布了,可以运行在你正在使用的操作系统类似的系统的下面。

报错:

如果python不是默认安装路径,可能会找不到相应的库文件:
Traceback (most recent call last): File
"/xs/app/python3.5/bin/pyinstaller", line 11, in <module> sys.exit(run()) File "/xs/app/python3.5/lib/python3.5/site-packages/PyInstaller/__main__.py", line 94, in run run_build(pyi_config, spec_file, **vars(args)) File "/xs/app/python3.5/lib/python3.5/site-packages/PyInstaller/__main__.py", line 46, in run_build PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs) File "/xs/app/python3.5/lib/python3.5/site-packages/PyInstaller/building/build_main.py", line 791, in main build(specfile, kw.get(distpath), kw.get(workpath), kw.get(clean_build)) File "/xs/app/python3.5/lib/python3.5/site-packages/PyInstaller/building/build_main.py", line 737, in build exec(text, spec_namespace) File "<string>", line 16, in <module> File "/xs/app/python3.5/lib/python3.5/site-packages/PyInstaller/building/build_main.py", line 213, in __init__ self.__postinit__() File "/xs/app/python3.5/lib/python3.5/site-packages/PyInstaller/building/datastruct.py", line 161, in __postinit__ self.assemble() File "/xs/app/python3.5/lib/python3.5/site-packages/PyInstaller/building/build_main.py", line 545, in assemble self._check_python_library(self.binaries) File "/xs/app/python3.5/lib/python3.5/site-packages/PyInstaller/building/build_main.py", line 629, in _check_python_library raise IOError(msg) OSError: Python library not found: libpython3.5mu.so.1.0, libpython3.5.so.1.0, libpython3.5m.so.1.0 This would mean your Python installation doesnt come with proper library files. This usually happens by missing development package, or unsuitable build parameters of Python installation. * On Debian/Ubuntu, you would need to install Python development packages * apt-get install python3-dev * apt-get install python-dev * If youre building Python by yourself, please rebuild your Python with `--enable-shared` (or, `--enable-framework` on Darwin)

解决方法:

1.编译/etc/ld.so.conf,添加:
/usr/local/lib64
/usr/local/lib
2.ldconfig
3.重新pyinstaller文件即可

 

以上是关于将Python脚本打包成可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

python文件打包成可执行文件exe的两种方法

python文件打包成可执行文件exe的两种方法

python文件打包成可执行文件exe的两种方法

python的程序可以编译成二进制可执行文件么

pyinstaller 打包多个资源文件到一个可执行文件

win10环境下利用pyinstaller把python代码(.py)打包成可执行文件(.exe)