How to extend distutils with a simple post install script?で説明されているように、インストール後のタスクをPythonのdistutilsに追加しようとしています。このタスクは、インストールされたlibディレクトリにあるPythonスクリプトを実行することになっています。このスクリプトは、インストールされたパッケージに必要な追加のPythonモジュールを生成します。distutils/setuptoolsを使用してPythonスクリプトのポストインストールを実行する
次のように私の最初の試みは次のとおりです。
from distutils.core import setup
from distutils.command.install import install
class post_install(install):
def run(self):
install.run(self)
from subprocess import call
call(['python', 'scriptname.py'],
cwd=self.install_lib + 'packagename')
setup(
...
cmdclass={'install': post_install},
)
このアプローチは動作しますが、私の知る限り2つの不備があります。ユーザー以外のPythonインタプリタを使用している場合
- を1つが
PATH
から選択された場合、インストール後のスクリプトは異なるインタプリタで実行され、問題が発生する可能性があります。 - ドライランなどでは安全ではありません。私はそれを関数にラップして
distutils.cmd.Command.execute
で呼び出すことで解決できるかもしれません。
ソリューションを改善するにはどうすればよいですか?これを行うための推奨された方法/ベストプラクティスはありますか?可能であれば、別の依存関係を避けることをお勧めします。これらの欠乏症に対処するための
'python setup.py install'や' pip install'も使いたい人は、http://stackoverflow.com/questions/21915469/python-setuptools-install-requiresを参照してください。 -is-ignored-over-override-cmdclass –