【发布时间】:2018-02-16 08:12:34
【问题描述】:
我在将简单的 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 等
【问题讨论】:
-
使用 setuptools 和使用
python setup.py install绝对是做到这一点的方法。 -
点安装 -e 。会不会更好?因为我觉得 python setup.py install 不安装依赖项。不过,我无法设法将脚本添加到 setup.py 中具有 scripts 属性的路径。好吧,它允许我用“script.py”来调用它,但我想只用“script”来调用它。除此之外, pip install -e 似乎可以正常工作,所以感谢您的建议:) 现在尝试查找如何在命令末尾删除 .py
-
您将
setup中的依赖项指定为install_requires,是的pip install -e是我用于开发的。 Setup.py 还具有脚本功能,用于定义程序的入口点,都可以在那里完成。
标签: python compilation nuitka python-standalone