【问题标题】:Executable script installed from pip uses the wrong Python path从 pip 安装的可执行脚本使用了错误的 Python 路径
【发布时间】:2015-10-18 04:05:38
【问题描述】:

我正在尝试使用 setuptools 打包我的一个项目。本项目部署了“setup.py”中配置的可执行脚本:

scripts=['bin/check_mailq.py'],

“check_mailq.py”文件的第一行是:

#!/usr/bin/env python

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

python setup.py bdist_egg bdist_wheel upload

然后在我的生产机器上用pip安装,python路径不对。

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

代替(示例):

#!/opt/production_venv/bin/python

怎么了?

【问题讨论】:

    标签: python pip setuptools


    【解决方案1】:

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

    如果pip 导致问题,它可能是在不同的virtualenv/使用不同的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

    【讨论】:

    • 很好,--executable 参数就是答案。顺便说一句,我必须输入--executable="python",因为“/usr/bin/env python”还不够。谢谢!
    猜你喜欢
    • 2013-08-07
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    相关资源
    最近更新 更多