2013-03-12 3 views
0

Я хотел бы использовать distutils (setup.py), чтобы иметь возможность устанавливать пакет python (из локального репозитория), для которого требуется другой пакет из другого локального репозитория. Так как я не хватает хорошей документации команды setup (я нашел только некоторые примеры here и here, запутываемый setup -терминами extras_require, install_require и dependency_links найденных here и here), кто-нибудь есть полный setup.py файл, который показывает, как это может быть обрабатывается, то есть, что distutils обрабатывает установку пакета, найденного в каком-то репозитории SVN, когда основной пакет, который я устанавливаю прямо сейчас, требует этого?Как установить setup.py установить другой модуль

Более подробное объяснение: У меня есть два локальных хранилища svn (или git) basicmodule и extendedmodule. Теперь я вывожу extendedmodule и запустил python setup.py install. Этот файл setup.py знает, что extendedmodule требует basicmodule и автоматически загружает его из репозитория и устанавливает его (если он еще не установлен). Как я могу решить это с помощью setup.py? Или, может быть, есть другой, лучший способ сделать это?


EDIT: Followup вопрос

На основании ответа Томом я пытался использовать setup.py следующим образом:

from setuptools import setup 
setup(
    name = "extralibs", 
    version = "0.0.2", 
    description = ("Some extra libs."), 
    packages=['extralib'], 
    install_requires = "basiclib==1.9dev-r1234", 
    dependency_links = ["https://source.company.xy/svn/MainDir/SVNDir/basiclib/[email protected]#egg=basiclib-1.9dev-r1234"] 

)

При попытке установить это как обычный пользователь, я получаю следующую ошибку:

error: Can't download https://source.company.xy/svn/MainDir/SVNDir/basiclib/[email protected]: 401 Authorization Required 

Но когда я нормальный svn проверки с той же самой ссылкой он работает:

svn co https://source.company.xy/svn/MainDir/SVNDir/basiclib/[email protected] 

Любое предложение, как решить эту проблему без изменения конфигурации репозитория SVN?

ответ

0

Я думаю, что проблема в том, что ваш клиент SVN является authentified (кэширование области где-то в каталоге ~/.subversion), что ваши Distutils HTTP клиента Дон» я знаю, как это сделать.

Distutils поддерживает ссылки svn + http в зависимых ссылках. Таким образом, вы можете попробовать добавить «SVN +» перед вашей ссылкой зависимостей обеспечивая имя пользователя и пароль:

dependency_links = ["svn+ https://user:[email protected]/svn/MainDir/SVNDir/basiclib/[email protected]#egg=basiclib-1.9dev-r1234 "]

По соображениям безопасности не следует помещать свое имя пользователя и пароль в setup.py файла.Один из способов сделать это, чтобы получить информацию аутентификации из переменной окружения или события, попытается извлечь ее из каталога конфигурации субверсии (~/.subversion)

Надеюсь, что справка

Смежные вопросы