2012-03-20 8 views
1

entry_point dictを使用してconsole.pyをsetup.pyにインストールします。これは、システムのいくつかのパスにpythonファイルを作成します(例えば、debianのrootは/usr/local/binです)。これはシステムによって変わるか、virtualenvsを使用するかによって変わります。Pythonコンソールコマンドのパスを「entry_points」としてインストールして配布します。

私は場所がそうで--home--user--prefix--install-scriptsとを含む、setup.pyに様々な引数によって異なりますsetup.py

+0

あなたはあなたが求めていることをより明確にすることができますか?ここでうまく形成された質問は表示されません。 – Paragon

+0

多分あなたの他の答えのいくつかを受け入れることができますか? Bye – jdi

+1

setup.pyでは、console_commandをentry_point(http://packages.python.org/distribute/setuptools.html#automatic-script-creation)として記述することができます。このコマンドは、システム内のあるパスに作成されています。 '/ usr/local/bin /'であると仮定せずにそのパスをチェックする方法があるかどうかを知るためには、パッケージをvirtualenvの中にインストールすると別のパスに置かれます。 –

答えて

1

でentry_pointsとしてインストールスクリプトのデフォルトのパスを必要とします。

スクリプトがすでに存在する場合は、最良の方法は、それが(whichコマンドなど)の実行可能ファイルを探して、$PATHに内容上を走査することであろう検索するが、これはあなたが

後にしているものではないかもしれません

distutils.sysconfigモジュールが役立つ可能性があります。

例えば pyflakesは私が pip install pyflakes

を実行する場合は、より具体的な場所を見つける必要がある場合get_config_vars辞書は役に立つかもしれない終わる、ディレクトリである..which

$ export WORKON_HOME='/tmp/so' 
$ mkvirtualenv blah 
$ python 
Python 2.7.2 
>>> import os 
>>> import distutils.sysconfig 
>>> pre = distutils.sysconfig.get_config_var("prefix") 
>>> bindir = os.path.join(pre, "bin") 
>>> print bindir 
/tmp/so/blah/bin 

>>> [(k, v) for (k, v) in distutils.sysconfig.get_config_vars().items() if "/tmp/so" in str(v)] 
[('prefix', '/private/tmp/so/blah'), ('exec_prefix', '/private/tmp/so/blah')] 

sysモジュールを介してこれらの変数の一部にアクセスすると便利です(sys.prefixsys.execprefix

など)。
+0

ありがとう、これは私の問題を解決してくれてあります。 :D –

+0

私はちょうど 'sys.prefix'意志が使用' distutils.sysconfig.get_config_var(「接頭辞」) ' –

+0

@JorgeEduardoCardona問題ありませんなしとして役立つことのドキュメントに記さ!私は 'sys.prefix'などにも答えを編集しました。また、良い点 – dbr