使用Nuitka进行Python独立编译

时间:2018-02-16 08:12:34

标签: python compilation nuitka python-standalone

我在将一个简单的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等

1 个答案:

答案 0 :(得分:1)

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

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

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

非常感谢:)