파이썬과 핍, 사용 가능한 패키지의 모든 버전을 나열합니까?
pip 및 virtualenv 와 함께 설치할 수있는 Python (2.X) 패키지의 이름을 감안할 때 pip가 설치할 수있는 가능한 모든 버전의 목록을 찾을 수있는 방법이 있습니까? 지금은 시행 착오입니다.
타사 라이브러리 용 버전을 설치하려고하는데 최신 버전이 너무 새 버전이므로 이전 버전과 호환되지 않는 변경 사항이있었습니다. 그래서 어떻게 든 pip가 알고있는 모든 버전의 목록을 가지고 싶습니다. 그래서 테스트 할 수 있습니다.
pastebin의 스크립트가 작동합니다. 그러나 매번 복사 / 생성해야하므로 여러 환경 / 호스트로 작업하는 경우 매우 편리하지 않습니다.
더 나은 만능 솔루션은 pip로 설치할 수있는 yolk 를 사용 하는 것입니다. 예를 들어 어떤 장고 버전을 사용할 수 있는지 확인하십시오.
$ pip install yolk3k
$ yolk -V django
Django 1.3
Django 1.2.5
Django 1.2.4
Django 1.2.3
Django 1.2.2
Django 1.2.1
Django 1.2
Django 1.1.4
Django 1.1.3
Django 1.1.2
Django 1.0.4
사소한 경고 : 노른자는 분배에 달려 있습니다. 이것은 나쁜 것은 아니지만 어떤 이유로 든 (사용되지 않는) python setuptools를 고수 해야하는 경우 문제가 될 수 있습니다.
참고 : 나는 노른자 개발에 관여하지 않습니다. 제대로 작동하지 않는 것 같으면 여기에 의견을 남기면 큰 차이가 없습니다. 사용 노른자 이슈 트래커를 대신 가능하면 수정을 제출하는 것이 좋습니다.
대한 핍> = 9.0 사용
$ pip install pylibmc==
Collecting pylibmc==
Could not find a version that satisfies the requirement pylibmc== (from
versions: 0.2, 0.3, 0.4, 0.5.1, 0.5.2, 0.5.3, 0.5.4, 0.5.5, 0.5, 0.6.1, 0.6,
0.7.1, 0.7.2, 0.7.3, 0.7.4, 0.7, 0.8.1, 0.8.2, 0.8, 0.9.1, 0.9.2, 0.9,
1.0-alpha, 1.0-beta, 1.0, 1.1.1, 1.1, 1.2.0, 1.2.1, 1.2.2, 1.2.3, 1.3.0)
No matching distribution found for pylibmc==
– 추가 패키지를 실제로 다운로드하거나 설치하지 않고 사용 가능한 모든 버전이 인쇄됩니다.
대한 핍 <9.0 사용
pip install pylibmc==blork
여기서 blork
설치 후보가 아닌 문자열이 될 수 있습니다.
업데이트 :
2017 년 9 월 현재이 방법은 더 이상 작동하지 않습니다 --no-install
.pip 7에서 제거되었습니다.
를 사용 pip install -v
하면 사용 가능한 모든 버전을 볼 수 있습니다
root@node7:~# pip install web.py -v
Downloading/unpacking web.py
Using version 0.37 (newest of versions: 0.37, 0.36, 0.35, 0.34, 0.33, 0.33, 0.32, 0.31, 0.22, 0.2)
Downloading web.py-0.37.tar.gz (90Kb): 90Kb downloaded
Running setup.py egg_info for package web.py
running egg_info
creating pip-egg-info/web.py.egg-info
패키지를 설치하지 않으려면 다음 솔루션 중 하나를 사용하십시오.
root@node7:~# pip install --no-deps --no-install flask -v
Downloading/unpacking flask
Using version 0.10.1 (newest of versions: 0.10.1, 0.10, 0.9, 0.8.1, 0.8, 0.7.2, 0.7.1, 0.7, 0.6.1, 0.6, 0.5.2, 0.5.1, 0.5, 0.4, 0.3.1, 0.3, 0.2, 0.1)
Downloading Flask-0.10.1.tar.gz (544Kb): 544Kb downloaded
또는
root@node7:~# cd $(mktemp -d)
root@node7:/tmp/tmp.c6H99cWD0g# pip install flask -d . -v
Downloading/unpacking flask
Using version 0.10.1 (newest of versions: 0.10.1, 0.10, 0.9, 0.8.1, 0.8, 0.7.2, 0.7.1, 0.7, 0.6.1, 0.6, 0.5.2, 0.5.1, 0.5, 0.4, 0.3.1, 0.3, 0.2, 0.1)
Downloading Flask-0.10.1.tar.gz (544Kb): 4.1Kb downloaded
pip 1.0으로 테스트
root@node7:~# pip --version
pip 1.0 from /usr/lib/python2.7/dist-packages (python 2.7)
이 정보를 얻기 위해 타사 패키지가 필요하지 않습니다. pypi는 아래의 모든 패키지에 간단한 JSON 피드를 제공합니다.
https://pypi.python.org/pypi/{PKG_NAME}/json
다음은 모든 버전을 가져 오는 표준 라이브러리 만 사용하는 일부 Python 코드입니다.
import json
import urllib2
from distutils.version import StrictVersion
def versions(package_name):
url = "https://pypi.python.org/pypi/%s/json" % (package_name,)
data = json.load(urllib2.urlopen(urllib2.Request(url)))
versions = data["releases"].keys()
versions.sort(key=StrictVersion)
return versions
print "\n".join(versions("scikit-image"))
이 코드는 다음과 같이 인쇄됩니다 (2015 년 2 월 23 일 기준).
0.7.2
0.8.0
0.8.1
0.8.2
0.9.0
0.9.1
0.9.2
0.9.3
0.10.0
0.10.1
노른자 대신 노른자 3k 패키지를 사용할 수 있습니다. yolk3k는 원래의 노른자위의 포크이며 python2와 3을 모두 지원합니다.
pip install yolk3k
Dead-Simple bash 스크립트를 생각해 냈습니다. jq 의 작성자 에게 감사합니다 .
#!/bin/bash
set -e
PACKAGE_JSON_URL="https://pypi.python.org/pypi/${1}/json"
curl -s "$PACKAGE_JSON_URL" | jq -r '.releases | keys | .[]' | sort -V
업데이트 : 버전 번호별로 정렬을 추가하십시오.
나는 이것이 바보 같은 것을 알고 있지만 다음과 같이 시도 할 수 있습니다.
pip install django==x
오류가 발생하지만이 패키지에 사용 가능한 모든 버전이 나열됩니다.
참고 1 : django
원하는 패키지로 교체하십시오 .
참고 2 : x라고 불리는 버전이 없기를 바랍니다 (x가 실제 버전 번호가되면 다른 문자열을 사용하십시오).
참고 3 : 전후 공간이 없습니다 ==
.
pip의 코드를 잠시 살펴본 후 패키지 위치를 담당하는 코드는의 PackageFinder
클래스에서 찾을 수 있습니다 pip.index
. 이 메서드 find_requirement
는의 버전을 조회 InstallRequirement
하지만 불행히도 최신 버전 만 반환합니다.
아래 코드는 원래 함수의 거의 1 : 1 사본이며 114 행의 리턴은 모든 버전을 리턴하도록 변경되었습니다.
스크립트는 하나의 패키지 이름을 첫 번째 인수로만 예상하고 모든 버전을 반환합니다.
pip의 코드에 익숙하지 않기 때문에 정확성을 보장 할 수 없습니다. 그러나 이것이 도움이되기를 바랍니다.
샘플 출력
python test.py pip
Versions of pip
0.8.2
0.8.1
0.8
0.7.2
0.7.1
0.7
0.6.3
0.6.2
0.6.1
0.6
0.5.1
0.5
0.4
0.3.1
0.3
0.2.1
0.2 dev
코드:
import posixpath
import pkg_resources
import sys
from pip.download import url_to_path
from pip.exceptions import DistributionNotFound
from pip.index import PackageFinder, Link
from pip.log import logger
from pip.req import InstallRequirement
from pip.util import Inf
class MyPackageFinder(PackageFinder):
def find_requirement(self, req, upgrade):
url_name = req.url_name
# Only check main index if index URL is given:
main_index_url = None
if self.index_urls:
# Check that we have the url_name correctly spelled:
main_index_url = Link(posixpath.join(self.index_urls[0], url_name))
# This will also cache the page, so it's okay that we get it again later:
page = self._get_page(main_index_url, req)
if page is None:
url_name = self._find_url_name(Link(self.index_urls[0]), url_name, req) or req.url_name
# Combine index URLs with mirror URLs here to allow
# adding more index URLs from requirements files
all_index_urls = self.index_urls + self.mirror_urls
def mkurl_pypi_url(url):
loc = posixpath.join(url, url_name)
# For maximum compatibility with easy_install, ensure the path
# ends in a trailing slash. Although this isn't in the spec
# (and PyPI can handle it without the slash) some other index
# implementations might break if they relied on easy_install's behavior.
if not loc.endswith('/'):
loc = loc + '/'
return loc
if url_name is not None:
locations = [
mkurl_pypi_url(url)
for url in all_index_urls] + self.find_links
else:
locations = list(self.find_links)
locations.extend(self.dependency_links)
for version in req.absolute_versions:
if url_name is not None and main_index_url is not None:
locations = [
posixpath.join(main_index_url.url, version)] + locations
file_locations, url_locations = self._sort_locations(locations)
locations = [Link(url) for url in url_locations]
logger.debug('URLs to search for versions for %s:' % req)
for location in locations:
logger.debug('* %s' % location)
found_versions = []
found_versions.extend(
self._package_versions(
[Link(url, '-f') for url in self.find_links], req.name.lower()))
page_versions = []
for page in self._get_pages(locations, req):
logger.debug('Analyzing links from page %s' % page.url)
logger.indent += 2
try:
page_versions.extend(self._package_versions(page.links, req.name.lower()))
finally:
logger.indent -= 2
dependency_versions = list(self._package_versions(
[Link(url) for url in self.dependency_links], req.name.lower()))
if dependency_versions:
logger.info('dependency_links found: %s' % ', '.join([link.url for parsed, link, version in dependency_versions]))
file_versions = list(self._package_versions(
[Link(url) for url in file_locations], req.name.lower()))
if not found_versions and not page_versions and not dependency_versions and not file_versions:
logger.fatal('Could not find any downloads that satisfy the requirement %s' % req)
raise DistributionNotFound('No distributions at all found for %s' % req)
if req.satisfied_by is not None:
found_versions.append((req.satisfied_by.parsed_version, Inf, req.satisfied_by.version))
if file_versions:
file_versions.sort(reverse=True)
logger.info('Local files found: %s' % ', '.join([url_to_path(link.url) for parsed, link, version in file_versions]))
found_versions = file_versions + found_versions
all_versions = found_versions + page_versions + dependency_versions
applicable_versions = []
for (parsed_version, link, version) in all_versions:
if version not in req.req:
logger.info("Ignoring link %s, version %s doesn't match %s"
% (link, version, ','.join([''.join(s) for s in req.req.specs])))
continue
applicable_versions.append((link, version))
applicable_versions = sorted(applicable_versions, key=lambda v: pkg_resources.parse_version(v[1]), reverse=True)
existing_applicable = bool([link for link, version in applicable_versions if link is Inf])
if not upgrade and existing_applicable:
if applicable_versions[0][1] is Inf:
logger.info('Existing installed version (%s) is most up-to-date and satisfies requirement'
% req.satisfied_by.version)
else:
logger.info('Existing installed version (%s) satisfies requirement (most up-to-date version is %s)'
% (req.satisfied_by.version, applicable_versions[0][1]))
return None
if not applicable_versions:
logger.fatal('Could not find a version that satisfies the requirement %s (from versions: %s)'
% (req, ', '.join([version for parsed_version, link, version in found_versions])))
raise DistributionNotFound('No distributions matching the version for %s' % req)
if applicable_versions[0][0] is Inf:
# We have an existing version, and its the best version
logger.info('Installed version (%s) is most up-to-date (past versions: %s)'
% (req.satisfied_by.version, ', '.join([version for link, version in applicable_versions[1:]]) or 'none'))
return None
if len(applicable_versions) > 1:
logger.info('Using version %s (newest of versions: %s)' %
(applicable_versions[0][1], ', '.join([version for link, version in applicable_versions])))
return applicable_versions
if __name__ == '__main__':
req = InstallRequirement.from_line(sys.argv[1], None)
finder = MyPackageFinder([], ['http://pypi.python.org/simple/'])
versions = finder.find_requirement(req, False)
print 'Versions of %s' % sys.argv[1]
for v in versions:
print v[1]
https://pypi.python.org/pypi/Django/- 관리자가 모든 패키지를 표시하도록 선택한 패키지에서 작동합니다 https://pypi.python.org/simple/pip/- 어쨌든 트릭을 수행해야합니다 (모든 링크 나열)
이것은 OSX에서 저에게 효과적입니다.
pip install docker-compose== 2>&1 \
| grep -oE '(\(.*\))' \
| awk -F:\ '{print$NF}' \
| sed -E 's/( |\))//g' \
| tr ',' '\n'
한 줄에 하나씩 목록을 반환합니다.
1.1.0rc1
1.1.0rc2
1.1.0
1.2.0rc1
1.2.0rc2
1.2.0rc3
1.2.0rc4
1.2.0
1.3.0rc1
1.3.0rc2
1.3.0rc3
1.3.0
1.3.1
1.3.2
1.3.3
1.4.0rc1
1.4.0rc2
1.4.0rc3
1.4.0
1.4.1
1.4.2
1.5.0rc1
1.5.0rc2
1.5.0rc3
1.5.0
1.5.1
1.5.2
1.6.0rc1
1.6.0
1.6.1
1.6.2
1.7.0rc1
1.7.0rc2
1.7.0
1.7.1
1.8.0rc1
1.8.0rc2
1.8.0
1.8.1
1.9.0rc1
1.9.0rc2
1.9.0rc3
1.9.0rc4
1.9.0
1.10.0rc1
1.10.0rc2
1.10.0
또는 최신 버전을 구할 수 있습니다.
pip install docker-compose== 2>&1 \
| grep -oE '(\(.*\))' \
| awk -F:\ '{print$NF}' \
| sed -E 's/( |\))//g' \
| tr ',' '\n' \
| gsort -r -V \
| head -1
1.10.0rc2
명심이 gsort
버전을 구문 분석 (OSX에) 설치해야합니다. 당신은 그것을 설치할 수 있습니다brew install coreutils
이 작은 Python 3 스크립트를 사용하면 JSON API를 사용하여 PyPI에서 패키지에 사용 가능한 버전 목록을 가져 와서 역순으로 인쇄 할 수 있습니다. 다른 파이썬 솔루션은 여기에 게시 달리,이 같은 느슨한 버전에 휴식하지 않습니다 django
의 2.2rc1
또는 uwsgi
의 2.0.17.1
:
#!/usr/bin/env python
import json
import sys
from urllib import request
from pkg_resources import parse_version
def versions(pkg_name):
url = f'https://pypi.python.org/pypi/{pkg_name}/json'
releases = json.loads(request.urlopen(url).read())['releases']
return sorted(releases, key=parse_version, reverse=True)
if __name__ == '__main__':
print(*versions(sys.argv[1]), sep='\n')
스크립트를 저장하고 패키지 이름을 인수로 사용하여 실행하십시오. 예 :
python versions.py django
3.0a1
2.2.5
2.2.4
2.2.3
2.2.2
2.2.1
2.2
2.2rc1
...
나는 어떤 운이 없었다 yolk
, yolk3k
또는 pip install -v
하지만, 그래서 나는 (에릭 치앙마이의 대답에서 파이썬 3에 적응)이를 사용하여 결국 :
import json
import requests
from distutils.version import StrictVersion
def versions(package_name):
url = "https://pypi.python.org/pypi/{}/json".format(package_name)
data = requests.get(url).json()
return sorted(list(data["releases"].keys()), key=StrictVersion, reverse=True)
>>> print("\n".join(versions("gunicorn")))
19.1.1
19.1.0
19.0.0
18.0
17.5
0.17.4
0.17.3
...
Pip 7.1.0 --no-install
에서 옵션 이 제거되었습니다 install
. 추가 패키지없이 모든 버전의 패키지를 얻는 방법을 찾았습니다.
pip install --no-deps Django==x.x.x
Collecting Django==x.x.x.
Could not find a version that satisfies the requirement Django==x.x.x. (from versions: 1.1.3, 1.1.4, 1.2, 1.2.1, 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.6, 1.2.7, 1.3, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7, 1.4, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 1.4.7, 1.4.8, 1.4.9, 1.4.10, 1.4.11, 1.4.12, 1.4.13, 1.4.14, 1.4.15, 1.4.16, 1.4.17, 1.4.18, 1.4.19, 1.4.20, 1.5, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.5.6, 1.5.7, 1.5.8, 1.5.9, 1.5.10, 1.5.11, 1.5.12, 1.6, 1.6.1, 1.6.2, 1.6.3, 1.6.4, 1.6.5, 1.6.6, 1.6.7, 1.6.8, 1.6.9, 1.6.10, 1.6.11, 1.7, 1.7.1, 1.7.2, 1.7.3, 1.7.4, 1.7.5, 1.7.6, 1.7.7, 1.7.8, 1.8a1, 1.8b1, 1.8b2, 1.8rc1, 1.8, 1.8.1, 1.8.2)
No matching distribution found for Django==x.x.x.
방금 이것을 실행했습니다.
pip show packagename
예 :
> pip3 show setuptools
---
Metadata-Version: 2.0
Name: setuptools
Version: 18.4
Summary: Easily download, build, install, upgrade, and uninstall Python packages
Home-page: https://bitbucket.org/pypa/setuptools
Author: Python Packaging Authority
Author-email: distutils-sig@python.org
License: PSF or ZPL
Location: /usr/local/lib/python3.4/site-packages
Requires:
필자는 실행중인 파이썬 환경에서 쉽게 사용할 수 있도록 몇 가지 수정 된 답변과 함께 게시 된 답변을 결합한 것입니다.
아이디어는 사용할 패키지 파인더의 인스턴스를 제공하는 완전히 새로운 명령 (install 명령 이후 모델링)을 제공하는 것입니다. 단점은 pip가 로컬 pip 구성 파일을 지원하고 읽는 인덱스와 함께 작동하고 사용하므로 일반 pip 설치에서와 같이 올바른 결과를 얻을 수 있다는 것입니다.
pip v 9.x 및 10.x와 호환되도록 노력했지만 9.x에서만 시도했습니다.
https://gist.github.com/kaos/68511bd013fcdebe766c981f50b473d4
#!/usr/bin/env python
# When you want a easy way to get at all (or the latest) version of a certain python package from a PyPi index.
import sys
import logging
try:
from pip._internal import cmdoptions, main
from pip._internal.commands import commands_dict
from pip._internal.basecommand import RequirementCommand
except ImportError:
from pip import cmdoptions, main
from pip.commands import commands_dict
from pip.basecommand import RequirementCommand
from pip._vendor.packaging.version import parse as parse_version
logger = logging.getLogger('pip')
class ListPkgVersionsCommand(RequirementCommand):
"""
List all available versions for a given package from:
- PyPI (and other indexes) using requirement specifiers.
- VCS project urls.
- Local project directories.
- Local or remote source archives.
"""
name = "list-pkg-versions"
usage = """
%prog [options] <requirement specifier> [package-index-options] ...
%prog [options] [-e] <vcs project url> ...
%prog [options] [-e] <local project path> ...
%prog [options] <archive url/path> ..."""
summary = 'List package versions.'
def __init__(self, *args, **kw):
super(ListPkgVersionsCommand, self).__init__(*args, **kw)
cmd_opts = self.cmd_opts
cmd_opts.add_option(cmdoptions.install_options())
cmd_opts.add_option(cmdoptions.global_options())
cmd_opts.add_option(cmdoptions.use_wheel())
cmd_opts.add_option(cmdoptions.no_use_wheel())
cmd_opts.add_option(cmdoptions.no_binary())
cmd_opts.add_option(cmdoptions.only_binary())
cmd_opts.add_option(cmdoptions.pre())
cmd_opts.add_option(cmdoptions.require_hashes())
index_opts = cmdoptions.make_option_group(
cmdoptions.index_group,
self.parser,
)
self.parser.insert_option_group(0, index_opts)
self.parser.insert_option_group(0, cmd_opts)
def run(self, options, args):
cmdoptions.resolve_wheel_no_use_binary(options)
cmdoptions.check_install_build_global(options)
with self._build_session(options) as session:
finder = self._build_package_finder(options, session)
# do what you please with the finder object here... ;)
for pkg in args:
logger.info(
'%s: %s', pkg,
', '.join(
sorted(
set(str(c.version) for c in finder.find_all_candidates(pkg)),
key=parse_version,
)
)
)
commands_dict[ListPkgVersionsCommand.name] = ListPkgVersionsCommand
if __name__ == '__main__':
sys.exit(main())
출력 예
./list-pkg-versions.py list-pkg-versions pika django
pika: 0.5, 0.5.1, 0.5.2, 0.9.1a0, 0.9.2a0, 0.9.3, 0.9.4, 0.9.5, 0.9.6, 0.9.7, 0.9.8, 0.9.9, 0.9.10, 0.9.11, 0.9.12, 0.9.13, 0.9.14, 0.10.0b1, 0.10.0b2, 0.10.0, 0.11.0b1, 0.11.0, 0.11.1, 0.11.2, 0.12.0b2
django: 1.1.3, 1.1.4, 1.2, 1.2.1, 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.6, 1.2.7, 1.3, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7, 1.4, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 1.4.7, 1.4.8, 1.4.9, 1.4.10, 1.4.11, 1.4.12, 1.4.13, 1.4.14, 1.4.15, 1.4.16, 1.4.17, 1.4.18, 1.4.19, 1.4.20, 1.4.21, 1.4.22, 1.5, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.5.6, 1.5.7, 1.5.8, 1.5.9, 1.5.10, 1.5.11, 1.5.12, 1.6, 1.6.1, 1.6.2, 1.6.3, 1.6.4, 1.6.5, 1.6.6, 1.6.7, 1.6.8, 1.6.9, 1.6.10, 1.6.11, 1.7, 1.7.1, 1.7.2, 1.7.3, 1.7.4, 1.7.5, 1.7.6, 1.7.7, 1.7.8, 1.7.9, 1.7.10, 1.7.11, 1.8a1, 1.8b1, 1.8b2, 1.8rc1, 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.8.10, 1.8.11, 1.8.12, 1.8.13, 1.8.14, 1.8.15, 1.8.16, 1.8.17, 1.8.18, 1.8.19, 1.9a1, 1.9b1, 1.9rc1, 1.9rc2, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.9.5, 1.9.6, 1.9.7, 1.9.8, 1.9.9, 1.9.10, 1.9.11, 1.9.12, 1.9.13, 1.10a1, 1.10b1, 1.10rc1, 1.10, 1.10.1, 1.10.2, 1.10.3, 1.10.4, 1.10.5, 1.10.6, 1.10.7, 1.10.8, 1.11a1, 1.11b1, 1.11rc1, 1.11, 1.11.1, 1.11.2, 1.11.3, 1.11.4, 1.11.5, 1.11.6, 1.11.7, 1.11.8, 1.11.9, 1.11.10, 1.11.11, 1.11.12, 2.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4
대체 솔루션은 Warehouse API를 사용하는 것입니다.
https://warehouse.readthedocs.io/api-reference/json/#release
예를 들어 Flask의 경우 :
import requests
r = requests.get("https://pypi.org/pypi/Flask/json")
print(r.json()['releases'].keys())
인쇄합니다 :
dict_keys(['0.1', '0.10', '0.10.1', '0.11', '0.11.1', '0.12', '0.12.1', '0.12.2', '0.12.3', '0.12.4', '0.2', '0.3', '0.3.1', '0.4', '0.5', '0.5.1', '0.5.2', '0.6', '0.6.1', '0.7', '0.7.1', '0.7.2', '0.8', '0.8.1', '0.9', '1.0', '1.0.1', '1.0.2'])
레거시 PyPi 패키지 API를 검색하는 현재 Python pip 기반 메소드는 다음과 같습니다.
from pip import index
import requests
finder = index.PackageFinder(
[],
['https://pypi.python.org/simple'],
session=requests.Session()
)
results = finder.find_all_candidates("package_name")
versions = [p.version for p in results]
당신은 당신의 결과를 grep 수 있습니다 pip list
-> % pip list | grep 'beautifulsoup4'
beautifulsoup4 (4.4.1)
'development' 카테고리의 다른 글
데이터 프레임의 열 이름 변경 (0) | 2020.02.28 |
---|---|
노드 / 익스프레스 : EADDRINUSE, 이미 사용중인 주소-서버 종료 (0) | 2020.02.28 |
AngularJS로 Enter 키를 누르면 양식 제출 (0) | 2020.02.28 |
터미널에서 반응 네이티브 앱을 실행하는 중 오류 발생 (iOS) (0) | 2020.02.28 |
안드로이드에서 상태 표시 줄 색상을 변경하는 방법 (0) | 2020.02.28 |