【问题标题】:Executable python program with all dependencies for Linux具有所有 Linux 依赖项的可执行 python 程序
【发布时间】:2020-01-30 08:20:20
【问题描述】:

有没有办法部署一个包含 Linux 系统上所有依赖项的 python 程序?我已经使用 py2exe 将包含所有模块的 python 脚本“编译”为独立的 .exe,但这显然只适用于 Windows。 有没有简单的方法,例如使用 python 开发一个烧瓶服务器,并将其所有脚本和模块捆绑在一起,以便可以在 Linux 上执行,而无需使用 pip 安装依赖项? (假设Linux平台安装了python3,但没有安装具体的python模块)。

谢谢!

【问题讨论】:

  • 你考虑过使用 Docker 吗?

标签: python python-3.x linux py2exe


【解决方案1】:

在基于 Linux 的系统中使用 PyInstaller PyInstaller 是一个用于将 Python 脚本转换为独立的可部署应用程序的程序。

从 PyPI 安装 PyInstaller:

pip install pyinstaller

进入你的程序目录并运行:

pyinstaller yourprogram.py

这将在名为 dist 的子目录中生成包

您可以使用-onefile 参数来生成捆绑包 只有一个可执行文件。

【讨论】:

  • 在 Windows 上时,pyinstaller 在 /dist 目录中创建一个 .exe。我如何告诉它以 linux 为目标?
  • 使用 --distpath 标志来定义你的可执行输出位置
  • pyinstaller --distpath=./dist/ --workpath=./build/win64 src/app.spec
  • 这是你的答案吗?
  • 我用一个简单的 helloWorld.py 对其进行了测试。当尝试在 linux 上运行可执行文件时,我收到此错误:' 文件 "site-packages/PyInstaller/loader/rthooks/pyi_rth__tkinter.py",第 30 行,在 FileNotFoundError: Tcl data directory "/var/folders/ 3q/wfnfkkm976z8q9gjz_npccbh0000gp/T/_MEIafCy5q/tcl" 未找到。 [20445] 无法执行脚本 pyi_rth__tkinter´
【解决方案2】:

您可以将依赖项安装在与here 提到的程序相同的目录中,然后以您想要的任何方式打包它。这样程序可以始终访问依赖项,即使它们没有安装在程序正在执行的系统中。

【讨论】:

    猜你喜欢
    • 2013-06-29
    • 2018-02-10
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 2017-08-22
    • 2019-10-12
    相关资源
    最近更新 更多