【问题标题】:Fail to compile a python script with dependencies无法编译具有依赖项的 python 脚本
【发布时间】:2015-02-11 09:21:32
【问题描述】:

我有一个很小的(70 行)python 脚本,我需要一个包含脚本所有依赖项的可执行文件。它应该可以在 Windows 上使用,其中python-magic 只能与 cygwin 一起使用。

现在我尝试使用 Nuitka,它给了我一个 6MB 的可执行文件,但它在 Windows 上无法执行,因为它声明它不是一个有效的可执行文件,没有任何进一步的信息说明为什么它不是。

然后我被告知尝试cx_freeze,但我无法安装。 Pip 表示我的 python 版本不兼容。 (用 pip 和 pip3 试了一下,python 已经安装好了..)

我如何获得 Windows 的可执行文件,包括我在 Unix 系统上编写的 python 脚本的所有依赖项。

Windows系统:Windows 8.1 64bit

Unix 系统:Debian 测试;已安装 Python 2.7 和 3.4

【问题讨论】:

  • 你运行的是哪个版本的python?哪个版本的 Windows?
  • 我编辑了操作,抱歉。

标签: python compilation dependencies executable portability


【解决方案1】:

我在 Windows 8.1 上使用 python 2.7 并且 pyinstaller 工作得非常好。 如果你想编译一个可以在没有任何 DLL 文件或任何东西的情况下移植的 exe 文件,你应该使用以下 pyinstaller 命令:

python pyinstaller.py --onefile your_script_file.py

【讨论】:

  • 我刚刚尝试了一个包含import magic; print('hello') 的脚本。使用您的命令,我得到一个可执行文件 (4MB) - 但是它不能在我的测试 Windows XP 上运行。它声明"Program too big to fit in memory"
  • 您是否在 Windows 机器上编译了您的可执行文件?如果您打算在 windows 机器上运行程序,请尝试在 windows 机器上编译它,看看是否可行。
  • 我在 debian jessie 上编译它.. 这是最初的想法,所以我不必让python-magic 在 Windows 机器上工作.. 但我会尝试这样做..
  • 尝试让 python-magic 在 windows 上运行,然后在 windows 上编译可执行文件。我不确定它是否有效,但可能值得一试。
  • 我刚刚检查了可执行文件,它有一个 ELF 文件头..所以难怪它不能在 windows 上运行..我目前正在安装 cygwin..
【解决方案2】:

试试Pyinstaller,让任何可执行文件都非常有用。如果你需要一个 Windows 可执行文件,你必须在 Windows 上编译它!

【讨论】:

  • 我试试pyinstaller,谢谢!使用它来编译可移植可执行文件时有什么需要注意的吗?
  • 如果 python 本身是可移植的,为什么还需要可移植的可执行文件?使用脚本...,添加上行#!/anv/python 并将可执行权限添加到文件中(在 *nix chmod x+a file.py 上)。这样,如果安装了python并且有库,就可以直接执行。
猜你喜欢
  • 2015-12-16
  • 2019-11-02
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 2019-06-22
  • 2021-10-20
  • 2019-10-20
相关资源
最近更新 更多