2009-03-18 3 views
1

많은 파이썬 달걀을 설치하기 위해 easy_install을 함수로 호출해야합니다. 정확하게 내가 설치 한 곳과 가져 오는 곳은 런타임에 결정됩니다. 예를 들어 어떤 서버를 사용하는지는 컴퓨터의 지리적 위치에 따라 다릅니다.함수로 호출 될 때 easy_install에 추가 찾기 링크를 추가하는 올바른 방법은 무엇입니까?

단일 서버를 항상 사용할 수 있다고 보장 할 수 없으므로 스크립트에서 여러 서버를 검사해야한다고 결정되었습니다. 일부 위치에는 금지 된 웹 필터링이 있으므로 UNC 경로를 확인해야합니다. 다른 지역이 예에서와 같이 혼합을 확인하는 날이 필요합니다

이 가 가 내가 발견 - 링크 옵션을 제공하지 않는 경우 잘 작동하는 것 같다

(-f) (이 경우에는 그냥 집어

myargs = ['-vv', '-m', '-a', '-f', '//filesrver/eggs http://webserver1/python_eggs http://webserver2/python_eggs, 'myproject==trunk-99'] 
setuptools.command.easy_install.main(myargs) 
distutils.cfg에서 기본값), 내가 추가 발견 - 링크에게 내가 할 모든이 옵션을 지정하려고하면

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을 구분하기 위해 어떤 문자를 사용해야합니까?

내가 Windows32에 setuptools에 0.6c9을 사용하고

답변

3

인용구 :

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을 큰 따옴표로 묶어 각 항목이 단일 항목으로 해석되도록하는 것이 좋습니다.

이 인수로 무엇을하고 있는지 잘 모르겠지만 위와 같은 방법으로 easy_install이 패키지 이름 (see the documentation)을 해석합니다.

myproject==은 불리언 또는 키워드 인수가 아닌 프로젝트 이름 만 찾고 있기 때문에 삭제하는 것이 좋습니다.

또한 저는 -vv 대신에 -v 인수를 사용해야한다고 생각합니다.

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) 
+0

인용문은 절단 및 붙여 넣기 오류했다 - 실제 프로그램이 그 버그를 가지고 있지 않았다. –