如何防止python轮扩大shebang?

时间:2015-11-18 23:45:25

标签: python shebang python-wheel

如果我使用python setup.py bdist_wheel构建一个包,则生成的包会通过setup(scripts=["script/path"])扩展setup.py中列出的脚本中的shebangs,以使用我的python可执行文件#!/home/f483/dev/storj/storjnode/env/bin/python的绝对路径。

这显然是一个问题,因为使用滚轮的任何人都没有这个设置。我使用什么样的shebang似乎没什么区别。

3 个答案:

答案 0 :(得分:2)

这通常不会发生。我建议:

  1. 升级pip / wheel / setuptools并检查它是否是一个错误。

  2. 重新检查当前的shbang是脚本中的通用内容。例如#!/usr/bin/env python

  3. 这是我无法重现问题的方法:

    paster --no-interactive test
    mkdir test/scripts
    echo -e "#!/usr/bin/env python\nprint('test')" > test/scripts/s.py
    # add scripts/s.py to test/setup.py
    cd test; python setup.py bdist_wheel
    

    如果您解压缩该轮,s.py将有一个无效/占位符shbang #!python,但在实际安装过程中,它将更改为正确的system / virtualenv路径。

答案 1 :(得分:2)

我终于把它缩小了,发现了问题。

这里是重现问题和解决方案的确切步骤。

  1. 在setup.py中添加的脚本中使用有效的shebang。就我而言#!/usr/bin/env python

  2. 使用virtualenv -p /usr/bin/python2 env创建virtualenv并使用source env/bin/activate激活。

  3. 将包含python setup.py install的软件包安装到virtualenv。

  4. 使用python setup.py bdist_wheel构建方向盘。

  5. 问题是在步骤3中将软件包安装到virtualenv。如果没有这样做,则不会扩展shebang。

答案 2 :(得分:0)

使用通用shebang #!python似乎可以解决这个问题。

编辑:这是incorect!