有没有一种方法可以将我的Python程序移动到其他计算机上,而不需要重新安装所有所需的模块呢?也许可以通过编译来实现?
Solution | Windows | Linux | OS X | Python 3 | License | One-file mode | Zipfile import | Eggs | pkg_resources support
bbFreeze | yes | yes | yes | no | MIT | no | yes | yes | yes
py2exe | yes | no | no | no | MIT | yes | yes | no | no
pyInstaller | yes | yes | yes | no | GPL | yes | no | yes | no
cx_Freeze | yes | yes | yes | yes | PSF | no | yes | yes | no
查看cx_Freeze的文档 这里。
您可以通过使用pyinstaller
来执行它。
首先通过以下方式安装pyinstaller
:
pip install pyinstaller
pyinstaller example.py
build/
的子目录中生成二进制文件,并且依赖项将在您脚本的源文件夹下的dist/
中。ls -lha build/example/example
ls -lha dist/example/
__main__.py
。> ls
__main__.py lamprop/
> ls lamprop/
__init__.py html.py latex.py parser.py text.py types.py
然后将其打包成zip文件,并为在类UNIX系统上使用添加shebang行;
cd src; zip -q ../foo.zip __main__.py lamprop/*.py
echo '#!/usr/bin/env python' >lamprop
cat foo.zip >>lamprop
chmod a+x lamprop
rm -f foo.zip
上述命令是为类UNIX系统编写的。在Windows系统上,应该将组合文件赋予py
扩展名,以便将其交给Python解释器。
Python解释器知道如何处理压缩的源代码存档。它会解压缩并运行__main__.py
。
您可以将已安装的第三方模块复制到源树中,并以相同方式包含它们。但是有几件事情需要记住:
numpy / scipy
之类的东西的Python代码,在另一台没有安装这些包但仍应该运行的计算机上运行相同的代码)。 - rayryeng