使用 Nuitka 进行 Python 独立编译

标签 python compilation nuitka python-standalone

我在将简单的 python 脚本编译成独立的可执行文件时遇到问题。我编写了一个 CLI 工具来轻松部署我们的前端应用程序,但尽管尝试了我可以提供给 Nuitka 的所有参数组合,但我从未设法获得一个可以工作的独立脚本。

一开始我没能成功获取“Requests”模块,因为它是我使用的唯一一个默认情况下不包含在 Python 中的模块。现在我觉得它包含在我收到有关其依赖项之一的错误中。

./cmd.dist/cmd.exe
Traceback (most recent call last):
  File "/home/user/code/cli/cmd.dist/cmd.py", line 12, in <module>
    import requests
  File "/home/user/code/cli/cmd.dist/requests/__init__.py", line 58, in requests
  File "/home/user/code/cli/cmd.dist/requests/utils.py", line 26, in utils
  File "/home/user/code/cli/cmd.dist/requests/compat.py", line 42, in compat
ImportError: No module named packages.ordered_dict

为了得到一个想法,我的导入看起来像这样:

from os.path import expanduser
from base64 import b64encode
from io import FileIO
from optparse import OptionParser
from json import dumps
from sys import stdout
from os import path
from os import makedirs
import subprocess
import requests

我愿意接受任何关于实现我想要做的事情的好方法的建议,即在路径中的/usr/local/bin 中有一个简单的可执行文件,并且可以很容易地安装在Unix系统上,无需安装pip等

最佳答案

好的,感谢@shuttle87,我通过创建一个包含脚本和entry_points属性的setup.py文件,成功地让一切正常工作。 scripts 是一个数组,仅包含我唯一的 python 文件的路径,entry_points 是一个如下所示的对象:

  {
    'console_scripts': ['cmd=script:main'],
  },

cmd 是您可以从任何地方调用来调用脚本的命令,而 script:main 意味着当您输入“cmd”时,它将调用 script.py 中的 main 函数!

非常感谢:)

关于使用 Nuitka 进行 Python 独立编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48822566/

相关文章:

python - 了解 Python 中的文件迭代

python - 使用 Pyinstaller 编译 PyQt4 时出错

python - 由于文件时间戳,尝试编译 Python 失败

compiler-errors - 如何克服python的编译(Nuitka)错误

python - 关于 fit_generator()/fit() 和线程安全

python - 异步: run one function threaded with multiple requests from websocket clients

python - 使用Python从docx解析表

c - 为什么编译器内联函数不写在不同的源文件上?

python - 我们可以在 nuitka 或 cython 中使用 pyqt 线程吗?

python - 是debian下编译的python文件兼容ubuntu