手短に言えば、実行時に使用しているモジュールをオーバーライドできるように、現在の実行パスを返すために console_script を取得する必要があります。
これが私の基本的なセットアップです(できる限り要約しました):
package_1:
caller_module.py
console_script_module:
main.py
dir_of_modules_to_use/
a.py
b.py
c.py
setup.py
setup.py contents:
setup(
entry_points = {
'console_scripts': [
'console-script-module = console_script_module.main:main'
]
}
)
詳細: つまり、caller_module.pyはサブプロセス呼び出しを発行してconsole-script-moduleを呼び出します。次に、dir_of_modules_to_useにあるモジュールが実行されます。別のスクリプトを使用して、これが発生する直前にそれらをオーバーライドすることにより、これらのモジュールの独自のバージョンを提供したいと思います。これを行うには、console-script-moduleがインストールされている場所の実行パスが一貫していないため (virtualenv の変更など)、その実行パスを知る必要があります。
これをmain.pyに追加して、別のコマンドライン引数を使用して呼び出してみました:
def print_absoulute_dir():
print os.path.abspath('dir_of_modules_to_use')
残念ながら、これは、コンソール スクリプトを呼び出した場所のパスのみを返します。
免責事項-これはハッキーでひどいことです。継承したコードからのものであり、短期的に機能するものが必要です。残念ながら、現時点ではcaller_module.py内のコードを変更することはできません。それ以外の場合は、 console_script_module:main.py の呼び出し方法を変更するだけです。