1

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

起初我没有设法获得“请求”模块,因为它是我使用的唯一一个默认情况下不包含在 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 等

4

1 回答 1

2

好的,感谢@shuttle87,我设法通过创建一个 setup.py 文件,其中包含脚本和 entry_points 属性,从而使一切正常工作。scripts 是一个数组,仅包含我唯一的 python 文件的路径,而 entry_points 是一个看起来像这样的对象:

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

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

非常感谢 :)

于 2018-02-16T11:14:03.253 回答