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

Ric*_*nop 27 python compilation

所以我有一个Python脚本:

myscript.py
Run Code Online (Sandbox Code Playgroud)

我正在执行它:

python D:\myscript.py
Run Code Online (Sandbox Code Playgroud)

但是,我必须安装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
Run Code Online (Sandbox Code Playgroud)

Cor*_*erg 24

这是一种方法(对于Windows,使用py2exe).

首先,py2exe在Windows框中安装.

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

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)
Run Code Online (Sandbox Code Playgroud)

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

$ python compile.py myscript.py
Run Code Online (Sandbox Code Playgroud)

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


Bin*_*ile 13

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

存储库中的源是比1.4包更好的起点.

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

从功能列表:

  • 将Python程序打包成标准可执行文件,可在没有安装Python的计算机上运行.
  • 多平台:适用于Windows(32位和64位),Linux(32位和64位)和Mac OS X(目前只有32位,请参阅MacOsCompatibility).
  • Multiversion:适用于从1.5到2.7的任何Python版本.注意:如果您在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)


uno*_*ode 10

你想要像py2exe这样的东西.


Mic*_*ael 9

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


ʇsә*_*ɹoɈ 5

是他们的清单.