从 pip 安装的可执行脚本使用了错误的 Python 路径

Executable script installed from pip uses the wrong Python path

我正在尝试使用 setuptools 打包我的一个项目。该项目部署了一个在 "setup.py":

中配置的可执行脚本
scripts=['bin/check_mailq.py'],

"check_mailq.py" 文件的第一行是:

#!/usr/bin/env python

如果我执行"setup.py install",第一行被替换为machine/virtualenv的python路径。顺便说一句,如果我使用以下命令为 pypi 打包项目:

python setup.py bdist_egg bdist_wheel upload

然后在我的生产机上用pip安装,python路径错误

#!/home/kbyte/pynagmailplugins/venv/bin/python

而不是(示例):

#!/opt/production_venv/bin/python

怎么了?

Distutils 使用 python 的路径修改 shebang 行,您使用 运行 distutils,所以这是预期的行为。我相信以这种方式设置是为了确保您的脚本所需的所有库依赖项都在相同的 python 版本中。

如果 pip 导致了问题,它可能是在不同的 virtualenv/with 和不同的 python 中安装的。

FWIW,你可以运行: python setup.py build --executable="/usr/bin/env python" 以手动保持 shebang 不变。

另请参阅: Don't touch my shebang!, https://github.com/hpcugent/vsc-mympirun-scoop/issues/7