Получить путь к командам консоли Python, установленным как 'entry_points' с дистрибутивом - PullRequest
1 голос
/ 20 марта 2012

Я устанавливаю консольную команду, используя entry_point dict в setup.py.Это создает файл python по какому-то пути в системе (например, root в debian /usr/local/bin), который может меняться в зависимости от системы или при использовании virtualenvs.

Мне нужен установленный путь по умолчанию для сценариевкак entry_points с setup.py

1 Ответ

1 голос
/ 20 марта 2012

Местоположение может варьироваться в зависимости от различных аргументов 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

The get_config_vars dict может быть полезно, если вам нужно найти более конкретное местоположение:

>>> [(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

...