Установите завершение Bash вместе с distutils / pip

Я создал простой модуль Python и хочу распространять его с помощью pip. Я также хочу установить файл завершения Bash вместе с модулем. Я устанавливаю модуль с Python 2.7.1+ и pip 0.8.2.

У меня есть setup.py:

setup(
    name='jenkinsmon',
    version='0.0.1',
    description='Jenkins Job Monitor',
    long_description=open('README.txt').read(),
    scripts=['bin/jenkinsmon'],
    data_files=[
        ('/etc/bash_completion.d', ['extras/jenkinsmon.completion']),
    ],
    install_requires = [
        'autojenkins',
        'argparse'
    ],
)

Теперь, если я попытаюсь установить пакет с pip install -e ., файл завершения Bash никогда не будет установлен вместе с пакетом. Я также пробовал обходные пути, указав MANIFEST.in, как описано здесь :

MANIFEST.in:

include extras/jenkinsmon.completion

Но и это не помогает - файлы завершения не устанавливаются. Что я могу сделать, чтобы установить файлы завершения Bash?


person Wolkenarchitekt    schedule 30.03.2012    source источник


Ответы (2)


MANIFEST.in описывает только дополнительные файлы, которые должны быть включены в исходные дистрибутивы; это не имеет ничего общего с установкой.

Установится ли файл, если вы запустите python setup.py install? pip полагается на инструменты установки, поэтому, возможно, он наследует свое поведение установки всего в один каталог / zipfile «яйцо».

person Éric Araujo    schedule 31.03.2012
comment
файл фактически устанавливается при запуске python setup.py install. Но я хочу установить его с помощью pip, так как только тогда его можно будет установить из удаленного репозитория Git. Я спрошу в группе virtualenv groups.google.com/group/python- virtualenv? hl = ru - person Wolkenarchitekt; 01.04.2012

Моя ошибка (помимо того, что я вообще не читала pip-документацию) заключалась в том, чтобы просто добавить -e к параметрам pip install, что означает установку в "редактируемом" режиме. Чтобы процитировать документацию

Используя параметр --editable или -e, pip может устанавливать непосредственно из репозитория системы контроля версий (в настоящее время он поддерживает Subversion, Mercurial, Git и Bazaar):

pip install -e svn+http://svn.colorstudy.com/INITools/trunk#egg=initools-dev

Эта опция обращается к клиенту командной строки для каждой соответствующей VCS, поэтому у вас должна быть установлена ​​VCS в вашей системе. URL-адрес репо должен начинаться с svn + (или hg +, git + или bzr +) и заканчиваться на # egg = packagename; в противном случае pip поддерживает те же форматы URL и проводные протоколы, которые поддерживает сама VCS.

Pip проверит исходное репо в каталог src / внутри virtualenv (т.е. pip_test_env / src / initools-dev), а затем запустит python setup.pyvelop в этом исходном репо. Это «связывает» код непосредственно из репозитория с каталогом site-packages virtualenv (путем добавления каталога репо в easy-install.pth), поэтому изменения, внесенные вами в проверку исходного кода, вступают в силу немедленно.

Если у вас уже есть локальная проверка VCS, которую вы хотите использовать, вы можете просто использовать команду pip install -e path / to / repo, чтобы установить ее таким же образом «редактируемой».

Итак, чтобы установить пакет в Систему навсегда, мне нужно удалить -r, после чего файлы завершения Bash устанавливаются должным образом.

person Wolkenarchitekt    schedule 04.04.2012