PYPI 패키지 색인에서 패키지 버전을 찾는 우아한 방법은 무엇입니까?

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

  •  22-07-2019
  •  | 
  •  

문제

현재 저는 링크를 찾아서 분해하기위한 정규식을 기반으로 매우 추악한 접근 방식을 사용하고 있습니다.

나는 코드에 불만이 없기 때문에 더 좋은 솔루션을 요구하고, 바람직하게는 stdlib 만 사용합니다.

편집하다

당면한 작업에는 두 가지 부분이 있습니다.

  1. 특정 기준과 일치하는 모든 분포 (이름의 접두사와 같은)를 찾으십시오.
  2. 발견 된 각 배포판에서 사용할 수있는 모든 버전을 찾으십시오.

예상 결과는 배포 -> 버전 -> 파일의 매핑입니다.

도움이 되었습니까?

해결책 3

불행하지만 다른 인덱스에 XMLRPC가 부족하여 솔루션을 유지해야합니다.

다른 팁

XML-RPC 인터페이스가 있습니다. 참조 Python.org 치즈 샵의 위키 페이지 (PYPI의 오래된 이름) API.

그 위키에서 발췌 :

>>> 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 Code에서 PYPI를 검색 할 수있는 Distutils2.pypi 모듈과 동일한 작업을 수행하기 위해 명령 줄 스크립트 인 Pysetup 프로그램이 포함되어 있습니다. DOC는 여전히 진행중인 작업이지만 몇 가지 예와 API 참조가 있습니다.

PYPI I 핀 버전에 이와 같은 빌드 아웃에서 :

Products.Ploneformgen == 1.2.5

여기에서는 버전 1.2.5를 검색합니다.

이것이 당신이 찾고있는 것인지 모르겠습니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top