2009-03-18 8 views
1

複数のサーバーからPythonの卵をインストールするには、easy_installを関数として呼び出す必要があります。私がインストールするものと、どこから入手するのかは、実行時に決定されます。たとえば、どのサーバを使用するかは、コンピュータの地理的位置によって異なります。関数として呼び出されたときにeasy_installに追加の検索リンクを追加する正しい方法は何ですか?

私は1台のサーバが常に利用可能であることを保証できないので、私のスクリプトはいくつかのサーバをチェックする必要があると判断されています。一部の地域では禁止的なWebフィルタリングが行われているため、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) 

私が見つける-linksオプション(-f)を提供していないときには、このような場合には、それだけで拾っ(うまく動作するようです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

引用は、カット&ペーストのエラーだった - 実際のプログラムは、そのバグを持っていませんでした。 –