Python 使用 Nuitka 独立编译

Python standalone compiling with Nuitka

我无法将简单的 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 文件设法使一切正常。脚本是一个数组,只包含我唯一的 python 文件的路径,entry_points 是一个看起来像这样的对象:

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

cmd 是您可以从任何地方调用脚本的命令,script:main 意味着当您键入 "cmd" 时,它将从 [=20= 调用主函数]!

非常感谢:)