6

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

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

4

3 回答 3

2

我终于缩小了范围,发现了问题。

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

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

  2. 使用 创建一个 virtualenvvirtualenv -p /usr/bin/python2 env并使用 激活source env/bin/activate

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

  4. 用 构建轮子python setup.py bdist_wheel

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

于 2015-11-19T16:12:31.307 回答
2

这通常不应该发生。我建议:

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

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

这是我无法重现该问题的一种方法:

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 路径。

于 2015-11-19T00:19:54.253 回答
0

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

编辑:这是不正确的!

于 2015-11-18T23:58:59.017 回答