pypiパッケージインデックスでパッケージのバージョンを見つけるエレガントな方法は何ですか?
質問
現在、リンクを見つけてそれらを分解するために、正規表現に基づいた非常にいアプローチを使用しています。
コードに不満があるため、より良い解決策を求めています。できればstdlibのみを使用してください。
編集
手元のタスクには2つの部分があります:
- 特定の条件(名前のプレフィックスなど)に一致するすべての分布を検索します。
- 見つかった各ディストリビューションで利用可能なすべてのバージョンを見つけます。
予想される結果は、分布のマッピングです->バージョン->ファイル。
解決 3
残念ですが、他のインデックスにxmlrpcがないため、ソリューションを維持する必要があります
他のヒント
XML-RPCインターフェースがあります。 Cheese Shop(PyPiの旧称)API 。
その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_packages
および package_releases
はまさにあなたが探しているもののようです。
@Ronnyのコメント
Pythonでコードを記述して、リストされているパッケージのどれが基準を満たすかを判断するだけです。つまり、パッケージ名が foo
で始まる必要がある場合:
>>> packages = server.list_packages()
>>> match_foo = [package for package in packages if package.startswith('foo')]
>>> print len(match_foo)
2
近い将来、distutils2をPyPIにリリースする予定です。これには、PythonコードからPyPIを検索できるdistutils2.pypiモジュールと、同じことを実行するコマンドラインスクリプトであるpysetupプログラムが含まれています。ドキュメントはまだ開発中ですが、いくつかの例とAPIリファレンスがあります:
pypi i pinバージョンにアクセスするビルドアウトでは、次のようになります:
Products.PloneFormGen == 1.2.5
ここではバージョン1.2.5を検索し、これを使用します。
これがあなたが探しているものかどうかわからない...
所属していません StackOverflow