有名なサードパーティのパッケージング システムを使用していくつかの python パッケージをパッケージ化していますが、エントリ ポイントの作成方法で問題が発生しています。
マシンにエントリ ポイントをインストールすると、エントリ ポイントには、次のように、任意の python インタープリターを指すシバンが含まれます。
/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
。
シバンにより、これはかなり移植性が低くなります。(これは確かに virtualenv の設計目標ではありませんが、ここではもう少し移植性を高める必要があります。)
私は狂った find/xargs/sed コマンドに頼りたくありません。(それは私のフォールバックですが。)
setuptools
フラグまたは構成を使用してシバンの後にインタープリターのパスを変更できる方法はありますか?