我可以以某种方式“编译”一个python脚本在没有安装Python的PC上工作吗?

时间:2010-11-11 19:19:43

标签: python compilation

所以我有一个Python脚本:

myscript.py

我正在执行它:

python D:\myscript.py

但是,我必须安装Python并将其包含在PATH环境变量中才能实现。

是否有可能以Python脚本“捆绑”Python可执行文件,以便其他人能够在没有Python的PC上运行它?

如果它仅适用于Windows,则可以。

编辑:

尝试compile.py后,我收到此错误:

Traceback (most recent call last):
  File "D:\stuff\compile.py", line 4, in <module>
    import py2exe
ImportError: No module named py2exe

6 个答案:

答案 0 :(得分:24)

以下是一种方法(对于Windows,使用py2exe)。

首先,在Windows框中安装py2exe

然后创建一个名为compile.py的python脚本,如下所示:

import sys
from distutils.core import setup
import py2exe

entry_point = sys.argv[1]
sys.argv.pop()
sys.argv.append('py2exe')
sys.argv.append('-q')

opts = {
    'py2exe': {
        'compressed': 1,
        'optimize': 2,
        'bundle_files': 1
    }
}

setup(console=[entry_point], options=opts, zipfile=None)

要将Python脚本编译为Windows可执行文件,请以程序作为参数运行此脚本:

$ python compile.py myscript.py

它将使用内部编译的Python解释器吐出二进制可执行文件(EXE)。然后,您可以只分发此可执行文件。

答案 1 :(得分:11)

PyInstaller对我来说效果很好,因为使用了upx而产生了相当小的包。它的依赖检测在当时也优于py2exe。似乎没有很多最近的开发,但可能不适用于3.x.

存储库中的源代码比1.4软件包更好。

另请参阅有关使用Python 2.6 +的Wiki页面。

从功能列表中:

  • 将Python程序打包成标准可执行文件,可在没有安装Python的计算机上运行。
  • Multiplatform:适用于Windows(32位和64位),Linux(32位和64位)和Mac OS X(目前仅限32位,请参阅MacOsCompatibility)。
  • Multiversion:适用于任何版本的Python,从1.5到2.7。注意:如果您在Windows上使用Python 2.6+,请参阅Python26Win。
  • 灵活的包装模式:
  • 单个目录:构建一个包含可执行文件的目录以及程序使用的所有外部二进制模块(.dll,.pyd,.so)。
  • 单个文件:构建一个完全独立的单个可执行文件,该文件在没有任何外部依赖的情况下运行。
  • 自定义:您可以通过Python中的简单脚本文件自动化PyInstaller以执行您想要的任何打包模式。
  • 显式智能支持许多第三个软件包(用于隐藏的导入,外部数据文件等),使它们可以与PyInstaller一起使用(参见SupportedPackages)。
  • 完整的单文件EGG支持:自动检查所需的.egg文件的依赖关系并捆绑,并且运行时也支持所有特定于egg的功能(入口点等)。
  • 部分目录EGG支持:所需的.egg目录会自动检查依赖项并捆绑,但特定于egg的功能在运行时不起作用。
  • 自动支持通过ctypes使用的二进制库(有关详细信息,请参阅CtypesDependencySupport)。
  • 支持通过众所周知的UPX压缩机进行自动二元包装。
  • 可选控制台模式(请参阅运行时的标准输出和标准错误)。
  • Windows特有的功能:
  • 支持代码签名可执行文件。
  • CRT的全自动支持:无需手动分发MSVCR * .DLL,redist安装程序,清单或其他任何内容;真正的单文件应用程序,无处不在!
  • 可选择的可执行图标。
  • 完全可配置的版本资源部分,并以可执行文件显示。
  • 支持构建COM服务器。
  • 特定于Mac的功能:
  • 对包的初步支持(参见MacOsCompatibility)

答案 2 :(得分:10)

你需要像py2exe这样的东西。

答案 3 :(得分:9)

有多种解决方案,例如py2execx-freeze或(仅适用于Mac OS X)py2app

答案 4 :(得分:5)

Here是他们的列表。

答案 5 :(得分:-3)

转到Notepad ++菜单,插件 - &gt; Python脚本 - &gt;显示控制台。在新打开的控制台窗口,底部类型..... execfile(&#39; C:/path/to/your/python/file/code.py')#使用正斜杠(/)而不是反向斜杠。 点击返回或点击运行按钮。