运行Python程序而不安装所需的模块

时间:2014-08-24 08:24:02

标签: python python-3.x bytecode

有没有办法将我的Python程序移动到其他计算机而无需重新安装所有必需的模块?

也许是通过编译?

4 个答案:

答案 0 :(得分:5)

我认为您正在寻找PyInstaller。根据定义,PyInstaller是一个程序,可以在Windows,Linux,Mac OS X,Solaris和AIX下将(Python)程序转换(打包)为独立的可执行文件。

在撰写本文时,PyInstaller并不支持Python 3.但是this page on freezing your code or shipping

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的文档here

答案 1 :(得分:0)

如果您只想在另一台计算机上使用python程序运行 PyInstaller py2exe 将是两个不错的推荐。

PyInstaller支持多种不同的操作系统:Windows,Linux,Mac OS等,而py2exe仅支持Windows。

详情请访问:

PyInstaller: http://www.pyinstaller.org/

py2exe: http://www.py2exe.org/

答案 2 :(得分:0)

您可以将应用程序及其使用的所有纯Python模块组合到一个压缩文件中。

此方法的示例包括youtube-dl和我自己的lamprop计划。

基本上,您创建一个目录,其中包含所有模块和程序文件的目录,该文件应命名为__main__.py

> ls
__main__.py  lamprop/
> ls lamprop/
__init__.py html.py latex.py parser.py text.py types.py

然后将其包装在一个zip文件中,并给出一个shebang-line,用于类UNIX系统;

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

您可以将已安装的第三方模块复制到源树中,并以相同的方式包含它们。但是要记住几件事情;

  • 许可:如果您想要包含第三方模块,他们的许可证必须允许您这样做。
  • 二进制模块:一些Python库,例如numpy包含共享库,这些库本质上是特定于平台的。在OS X或Linux上编译的numpy模块在Windows上不起作用,反之亦然。

答案 3 :(得分:0)

您可以在pyinstaller的帮助下执行它

首先通过-

安装pyinstaller
pip install pyinstaller

用法-

pyinstaller example.py

这将在名为build/的子目录中生成二进制文件,并且依赖项将位于脚本的源文件夹中的dist/下。

ls -lha build/example/example
ls -lha dist/example/

对于手动- https://pyinstaller.readthedocs.io/en/stable/usage.html#running-pyinstaller-with-python-optimizations