我正在使用众所周知的第三方打包系统打包一些 python 包,但我遇到了创建入口点的方式的问题。
当我在我的机器上安装一个入口点时,入口点将包含一个指向任何 python 解释器的 shebang,如下所示:
在/home/me/development/test/setup.py
from setuptools import setup
setup(
entry_points={
"console_scripts": [
'some-entry-point = test:main',
]
}
)
在/home/me/.virtualenvs/test/bin/some-entry-point:
#!/home/me/.virtualenvs/test/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'test==1.0.0','console_scripts','some-entry-point'
__requires__ = 'test==1.0.0'
import sys
from pkg_resources import load_entry_point
sys.exit(
load_entry_point('test==1.0.0', 'console_scripts', 'some-entry-point')()
)
如您所见,入口点样板文件包含一个硬编码路径,指向我用来创建第三方包的虚拟环境中的 python 解释器。
使用我的第三方打包系统安装这个入口点会导致在机器上安装入口点。但是,对于目标机器上不存在的 Python 解释器的硬编码引用,用户必须运行python /path/to/some-entry-point
.
shebang 使这非常不便携。(这肯定不是 virtualenv 的设计目标;但我只需要在这里让它更便携一点。)
我宁愿不使用疯狂的 find/xargs/sed 命令。(虽然这是我的后备。)
有没有什么方法可以在 shebang 之后使用setuptools
标志或配置更改解释器路径?