4

現在、リンクを見つけて分解するために、正規表現に基づく非常に醜いアプローチを使用しています。

私はコードに不満があるので、できればstdlibのみを使用して、より良い解決策を求めています。

編集

手元のタスクには2つの部分があります。

  1. 特定の基準(名前のプレフィックスなど)に一致するすべての分布を検索します。
  2. 見つかった各ディストリビューションで利用可能なすべてのバージョンを検索します。

期待される結果は、配布->バージョン->ファイルのマッピングです。

4

4 に答える 4

1

近いうちに distutils2 を PyPI にリリースする予定です。これには、Python コードから PyPI を検索できる distutils2.pypi モジュールと、(とりわけ) 同じことを行うコマンドライン スクリプトである pysetup プログラムが含まれています。ドキュメントはまだ作成中ですが、いくつかの例と API リファレンスがあります。

于 2011-10-10T15:08:34.557 に答える
1

XML-RPC インターフェイスがあります。Cheese Shop (PyPi の古い名前) API に関する Python.org wiki ページを参照してください。

そのウィキからの抜粋:

>>> import xmlrpclib
>>> server = xmlrpclib.Server('http://pypi.python.org/pypi')
>>> server.package_releases('roundup')
['1.1.2']
>>> server.package_urls('roundup', '1.1.2')
[{'has_sig': True, 'comment_text': '', 'python_version': 'source', 'url': 'http://pypi.python.org/packages/source/r/roundup/roundup-1.1.2.tar.gz', 'md5_digest': '7c395da56412e263d7600fa7f0afa2e5', 'downloads': 2989, 'filename': 'roundup-1.1.2.tar.gz', 'packagetype': 'sdist', 'size': 876455}, {'has_sig': True, 'comment_text': '', 'python_version': 'any', 'url': 'http://pypi.python.org/packages/any/r/roundup/roundup-1.1.2.win32.exe', 'md5_digest': '983d565b0b87f83f1b6460e54554a845', 'downloads': 2020, 'filename': 'roundup-1.1.2.win32.exe', 'packagetype': 'bdist_wininst', 'size': 614270}]

list_packagespackage_releasesまさにあなたが探しているもののようです。

@ロニーのコメント

リストされたパッケージのどれが基準を満たすかを判断するには、Python でいくつかのコードを記述する必要があります。つまり、パッケージ名を で開始する必要がある場合foo:

>>> packages = server.list_packages()
>>> match_foo = [package for package in packages if package.startswith('foo')]
>>> print len(match_foo)
2
于 2009-03-15T13:02:06.363 に答える
0

残念ですが、他のインデックスにxmlrpcがないため、ソリューションを維持する必要があります

于 2012-11-07T17:27:20.807 に答える
-1

pypi i pinバージョンにアクセスするビルドアウトでは、次のようになります。

Products.PloneFormGen == 1.2.5

ここではバージョン1.2.5を検索し、これを使用します。

これがあなたが探しているものかどうかわからない...

于 2009-03-14T19:15:17.863 に答える