Как правильно добавить дополнительные ссылки для поиска в easy_install при вызове в качестве функции? - PullRequest
1 голос
/ 18 марта 2009

Мне нужно вызвать easy_install как функцию, чтобы установить несколько яиц Python с нескольких серверов. Точно то, что я устанавливаю и откуда я его получаю, определяется во время выполнения: например, какие серверы я использую, зависит от географического расположения компьютера.

Поскольку я не могу гарантировать, что какой-либо один сервер будет всегда доступен, было решено, что мой сценарий должен проверить количество серверов. В некоторых местах есть запретительная веб-фильтрация, поэтому мне нужно проверить путь UNC. В других местах мне нужно проверить микс, как в этом примере:

myargs = ['-vv', '-m', '-a', '-f', '//filesrver/eggs http://webserver1/python_eggs  http://webserver2/python_eggs, 'myproject==trunk-99']
setuptools.command.easy_install.main( myargs )

Кажется, что все работает нормально, когда я не предоставляю опцию find-links (-f) (в этом случае он просто выбирает значения по умолчанию из distutils.cfg), когда я пытаюсь указать дополнительную find-links для вариант все, что я получаю, это:

Traceback (most recent call last):
  File
"D:\workspace\pythonscripts_trunk\javapy_egg\Scripts\test_javapy.py",
line 20, in ?
result = pyproxy.requireEgg( eggspec , True, hosts )
File
"d:\workspace\pythonscripts_trunk\javapy_egg\src\calyon\javapy\pyproxy.py", line 141, in requireEgg
pkg_resources.require(eggname)
File "d:\python24\lib\site-packages\setuptools-0.6c9-py2.4.egg\pkg_resources.
py", line 626, in require
needed = self.resolve(parse_requirements(requirements))
File "d:\python24\lib\site-packages\setuptools-0.6c9-py2.4.egg\pkg_resources.py", line 524, in resolve
raise DistributionNotFound(req)  # XXX put more info here
pkg_resources.DistributionNotFound: myproject==trunk-99

Может кто-нибудь подтвердить правильный способ сделать это? Например, я использую Windows или UNIX косые черты в аргументах? Какой символ должен быть использован для разделения несколько URL?

Я использую setuptools 0.6c9 на Windows32

1 Ответ

3 голосов
/ 24 марта 2009

Цитата:

myargs = ['-vv', '-m', '-a', '-f', '//filesrver/eggs http://webserver1/python_eggs http://webserver2/python_eggs, 'myproject==trunk-99']

setuptools.command.easy_install.main( myargs )

Первая проблема, с которой я сталкиваюсь, заключается в том, что вам не хватает одной кавычки в конце списка серверов для поиска.

Кроме того, обычно рекомендуется заключать в URL каждый двойные кавычки, чтобы каждый из них интерпретировался как один элемент.

Я не уверен, что вы делаете с этим аргументом 'myproject==trunk-99', но, как вы написали выше, easy_install интерпретирует его как имя пакета ( см. Документацию ).

Возможно, вы захотите удалить myproject==, так как он ищет только имя проекта, а не логический аргумент или аргумент ключевого слова.

Кроме того, я думаю, что вы хотели использовать аргумент -v вместо несуществующего -vv.

Вы правильно использовали пробел для разделения вашего списка URL / серверов. Прямая косая черта будет работать как в Unix, так и в Windows.

Что-то вроде этого должно работать для вас:

myargs = ['-v', '-m', '-a', '-f', '"//filesrver/eggs/" "http://webserver1/python_eggs/" "http://webserver2/python_eggs/"', 'trunk-99']
setuptools.command.easy_install.main( myargs )
...