首页 文章

如何使Python脚本独立可执行文件在没有任何依赖项的情况下运行?

提问于
浏览
485

我正在构建一个Python应用程序,不想强迫我的客户端安装Python和模块 . 我也想让我的应用程序闭源 .

那么,有没有办法将Python脚本编译为独立的可执行文件?

16 回答

  • 13

    您可能希望调查Nuitka . 它需要python源代码并将其转换为C API调用 . 然后它编译成可执行的二进制文件(Linux上的ELF) . 它已经存在了几年,并支持各种Python版本 .

    如果使用它,您可能也会获得性能提升 . 推荐的 .

  • 174

    对于Python 3.2脚本,唯一的选择是Cxfreeze . 从源代码构建它,否则它将无法工作 .

    对于python 2.x我建议使用pyinstaller,因为它可以将python程序打包在一个可执行文件中,这与CxFreeze不同,它也输出库 .

  • 1

    您可以找到@ https://wiki.python.org/moin/DistributionUtilities列出的分发实用程序列表 .

    我使用bbfreeze并且它一直运行良好(但是仍然支持python 3) .

  • 21

    使用Cython转换为c,编译并与gcc链接 . 另一个可能是,使c中的核心函数(你想要反转的那些),编译它们并使用python boost来导入已编译的代码(加上你得到更快的代码执行) . 然后使用提到的任何工具进行分发 .

  • 17

    是的,可以将Python脚本编译为独立的可执行文件 .

    PyInstaller可用于将Python程序转换为独立的可执行文件,位于 Windows014898Mac OS XFreeBSDSolarisAIX 下 . 它是推荐的转换器之一 .

    py2exe将Python脚本转换为仅Windows平台中的可执行文件 .

    Cython是Python编程语言和扩展的Cython编程语言的静态编译器 .

  • 157

    py2exe将生成您想要的exe文件,但您需要在要使用新exe的机器上安装相同版本的MSVCR90.dll . 有关详细信息,请参阅http://www.py2exe.org/index.cgi/Tutorial .

  • 6

    我想编译一些有关使用Python 2.7在Windows上创建独立文件的有用信息 .

    我使用了 py2exe 并且它有效,但我遇到了一些问题 .

    这最后一个原因让我试试 PyInstaller http://www.pyinstaller.org/ .

    在我看来,它更好,因为:

    • 它更容易使用 .

    我建议使用以下行创建一个.bat文件(pyinstaller.exe必须在Windows路径中):

    pyinstaller.exe --onefile MyCode.py
    

    所以,我认为,至少对于python 2.7,更好更简单的选择是PyInstaller .

  • 18

    我被告知PyRun,https://www.egenix.com/products/python/PyRun/也是一种选择 .

  • 21

    你可能会喜欢py2exe . 你也会在那里找到在linux上做这件事的信息

  • 1

    使用py2exe ....使用下面的设置文件:

    from distutils.core import setup
     import py2exe
    
     from distutils.filelist import findall
     import matplotlib
    
     setup(
           console=['PlotMemInfo.py'],
    
           options={
                    'py2exe': {
                    'packages' : ['matplotlib'],
                'dll_excludes': ['libgdk-win32-2.0-0.dll',
                                     'libgobject-2.0-0.dll',
                     'libgdk_pixbuf-2.0-0.dll']
                              }
                    },
           data_files = matplotlib.get_py2exe_datafiles()
         )
    
  • 6

    不完全是python代码的打包,但现在还有来自google的grumpy,它将代码转换为Go . 它不支持python C api,因此它可能不适用于所有项目 .

  • 9

    使用pyinstaller,我找到了一个更好的方法,使用.exe的快捷方式而不是制作 --onefile . 无论如何,在那里运行基于站点的应用程序,那么你的程序也依赖于html,js,css文件 . 没有必要将所有这些文件移动到某个地方......相反,如果我们将工作路径向上移动 .

    创建exe的快捷方式,将其移动到顶部并按指定设置目标和启动路径,使相对路径转到dist \ folder: Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\" 可以将快捷方式重命名为任何内容,以便重命名为"GTFS-Manager"
    现在,当我双击快捷方式时,就像我运行python一样!我发现这种方法比 --onefile 更好:

    • 在onefile 's case, there'中,win7操作系统缺少.dll的问题,需要先安装等等 . 打哈欠 . 通常使用多个文件构建,没有这样的问题 .

    • 我的python脚本使用的所有文件(它都是's deploying a tornado web server and needs a whole freakin'文件的网站!)不需要移动到任何地方:我只是在顶部创建快捷方式 .

    • 我实际上可以在ubuntu(运行python3 myfile.py)和windows(双击快捷方式)中使用这个完全相同的文件夹 .

    • 我不需要为.spec文件过于复杂的黑客攻击来包含数据文件等 .

    哦,记得在构建后删除build文件夹,将保存大小 .

  • 2

    您可以使用PyInstaller将Python程序打包为独立的可执行文件 . 它适用于Windows,Linux和Mac .

    PyInstaller快速入门从PyPI安装PyInstaller:pip install pyinstaller
    转到程序的目录并运行:pyinstaller yourprogram.py
    这将在名为dist的子目录中生成包 . 有关更详细的演练,请参阅手册 .

  • 67

    第三种选择是cx_Freeze,这是跨平台的 .

  • 4

    我还建议使用pyinstaller以获得更好的向后兼容性,例如python 2.3 - 2.7 .
    对于 py2exe ,你必须有python 2.6

  • 8

    您可以使用py2exe已经回答并使用cython转换 .pyc 中的密钥 .py 文件,C编译文件,如Windows中的 .dll 和Linux中的 .so ,比常见的 .pyo.pyc 文件更难恢复(并且还获得了性能!)

相关问题