расположение может меняться в зависимости от различных аргументов setup.py
, включая --home
, --user
, --prefix
, --install-scripts
и так далее.
Если сценарий уже существует, лучший способ, чтобы найти его будет сканировать за содержание в $PATH
, ищет исполняемый файл (например, командой which
), но это не может быть то, что вы после
Модуль distutils.sysconfig может быть более полезным.
$ 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
..which это каталог, в котором, например pyflakes
заканчивается, если я бегу pip install pyflakes
get_config_vars
ДИКТ может быть полезно, если вам нужно найти более конкретное местоположение:
>>> [(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.prefix
и sys.execprefix
Можете ли вы уточнить, о чем вы спрашиваете? Я не вижу здесь правильного вопроса. – Paragon
Можете ли вы также принять некоторые из ваших других ответов? Bye – jdi
В setup.py вы можете описать команду console_command как entry_point (http://packages.python.org/distribute/setuptools.html#automatic-script-creation), эти команды создаются по определенному пути в системе, я хочу знать, есть ли способ проверить этот путь без предположения, это '/ usr/local/bin /', потому что если вы установите пакет внутри virtualenv, он будет по другому пути. –