Каков правильный способ добавить дополнительные ссылки поиска в easy_install при вызове как функции?

StackOverflow https://stackoverflow.com/questions/659575

  •  20-08-2019
  •  | 
  •  

Вопрос

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

Поскольку я не могу гарантировать, что какой-либо один сервер всегда будет доступен, было решено, что моему скрипту необходимо проверить несколько серверов.В некоторых местоположениях запрещена веб-фильтрация, поэтому мне нужно проверить 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

Это было полезно?

Решение

Цитата:

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 )
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top