Расположение может варьироваться в зависимости от различных аргументов 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
.. это каталог, в котором, например, 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
.
person
dbr
schedule
20.03.2012
/usr/local/bin/
, потому что, если вы установите пакет внутри virtualenv, он будет по другому пути. - person Jorge E. Cardona   schedule 20.03.2012setuptools.command.install_scripts
есть атрибутinstall_dir
(его можно получить в setup.py, если создать его подкласс) - person jfs   schedule 20.03.2012