我是新手Python/Django程序员。

我创建了一个基于Django 2.0的应用程序,并根据the official document对其进行了打包。
然后我运行命令:

$ pip install --user django-easybuggy-0.1.tar.gz

但是,出现错误,无法安装。
Processing ./django-easybuggy-0.1.tar.gz
Collecting certifi==2018.1.18 (from django-easybuggy==0.1)
  Could not find a version that satisfies the requirement certifi==2018.1.18 (from django-easybuggy==0.1) (from versions: )
No matching distribution found for certifi==2018.1.18 (from django-easybuggy==0.1)

有谁知道错误发生的原因以及如何解决?

另外,我通过以下命令创建了requirements.txt:
$ pip freeze > requirements.txt

重现步骤:
  • 下载我的应用程序存档:
    $ wget https://github.com/k-tamura/easybuggy4django/releases/download/0.0.1/django-easybuggy-0.1.tar.gz
    
  • 运行命令:
    $ pip install --user django-easybuggy-0.1.tar.gz
    

  • 此致,

    最佳答案

    软件包certifi==2018.1.18已从PyPI中删除。当前版本是certifi==2018.4.16。这样做的原因是certifi有 pip 特殊:它只是根SSL证书的集合,因此一旦它们过时并且发布了带有新证书的新版本certifi,出于安全原因,旧的证书将被删除-因此,您不会意外地继续安装和使用旧的且可能被吊销或破坏的证书。

    您的解决方案是完全放弃确切的版本要求:

    setup(
        ...
        install_requires=['certifi'],
        ...
    )
    

    或要求最低版本,并(可选)将其与软件包的新版本结合:
    setup(
        ...
        install_requires=['certifi>=2018.4.16'],
        ...
    )
    

    后者是我通常使用的方式:
  • 您总是知道测试过的最低要求版本(因此知道您的程序包可以很好地工作),
  • 如果用户碰巧安装了旧版本的certifi,则在安装软件包时它将自动升级到当前最新版本。
  • 关于python - Django2应用程序安装的"Could not find a version that satisfies the requirement"错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50266110/

    10-11 01:36