【问题标题】:Heroku Upload - Could not find a version that satisfies the requirement anaconda-client==1.4.0Heroku 上传 - 找不到满足要求 anaconda-client==1.4.0 的版本
【发布时间】:2018-04-28 11:51:32
【问题描述】:

我正在尝试将 Django 应用推送到 Heroku,但在运行 git push heroku master 时出现以下错误:

Counting objects: 80, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (74/74), done.
Writing objects: 100% (80/80), 990.21 KiB | 0 bytes/s, done.
Total 80 (delta 20), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Python app detected
remote:  !     The latest version of Python 2 is python-2.7.14 (you are using 
python-2.7.12, which is unsupported).
remote:  !     We recommend upgrading by specifying the latest version 
(python-2.7.14).
remote:        Learn More: https://devcenter.heroku.com/articles/python-
runtimes
remote: -----> Installing python-2.7.12
remote: -----> Installing pip
remote: -----> Installing requirements with pip
remote:        Collecting alabaster==0.7.7 (from -r 
/tmp/build_a1f6d188f9e0e61e01076a73d4e10542/requirements.txt (line 1))
remote:          Downloading alabaster-0.7.7-py2.py3-none-any.whl
remote:        Collecting anaconda-client==1.4.0 (from -r 
/tmp/build_a1f6d188f9e0e61e01076a73d4e10542/requirements.txt (line 2))
remote:          Could not find a version that satisfies the requirement 
anaconda-client==1.4.0 (from -r 
/tmp/build_a1f6d188f9e0e61e01076a73d4e10542/requirements.txt (line 2)) (from 
versions: 1.1.1, 1.2.2)
remote:        No matching distribution found for anaconda-client==1.4.0 (from 
-r /tmp/build_a1f6d188f9e0e61e01076a73d4e10542/requirements.txt (line 2))
remote:  !     Push rejected, failed to compile Python app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !   Push rejected to demo-freshstart.

似乎它与 Anaconda 有关,但我很早就在我的 requirements.txt 中看到了 Anaconda,因此认为它可能只是由于其他原因而被赶上的第一件事。

【问题讨论】:

  • 您确定在您的要求中需要anacond-client 吗?你的应用用它做什么?
  • 我不需要它,但 pip freeze
  • 当我在 requirements.txt 中删除对 anacond-client 的引用时,它仍然显示相同的错误
  • 您在推送之前是否提交了对需求的更改?他们依赖于 anaconda-client 的要求中是否还有其他内容?
  • 如果你使用 pip freeze > requirements.txt 和一个单独的 conda env,它会在文件中放入一些依赖项,当你推送到 Heroku 时会失败。您可以在 requirements.txt 中单独删除不必要的依赖项,或者从 Heroku 文档中的修剪版本开始:devcenter.heroku.com/articles/python-pip

标签: python django heroku


【解决方案1】:

根据PyPI,没有anaconda-client 1.4.0版本:最高版本是1.2.2。

【讨论】:

    【解决方案2】:

    你在 conda 中创建环境了吗?

    如果是这样,在你激活环境之后。你需要 conda install pip 来激活 pip install,否则你的 pip freeze 会回到默认的 anaconda 环境。 (这就是你在那里看到它们的原因)

    1. conda install pip
    2. pip 再次安装所有可用的软件包。 (例如pip install django)
    3. pip freeze > requirements.txt

    请参阅下面的神话 5 https://jakevdp.github.io/blog/2016/08/25/conda-myths-and-misconceptions/

    【讨论】:

    • 嗨,我已经尝试过你的过程,但它仍然会使用 anaconda-client 生成相同的 requriements.txt
    【解决方案3】:

    这个错误的解决方法很简单:

    1. 我希望您已经在您的应用文件夹中创建了 requirements.txt 文件,您运行 pip > freeze 命令并提交并推送。

    当您这样做时,pip 还可以自动将模块添加到文件中,Pip 还可以自动从您的本地代码库安装依赖项。这可能是个问题。

    1. 只需转到您的 requirements.txt 文件并查找 anaconda-client==1.4.0(或以“未找到匹配的分发”模块开头的错误)并将其删除从文件中。

    2. 保存文件,提交和推送。

    我在使用 conda 时遇到了类似的问题和错误,我采取了相同的步骤,它对我有用。

    我希望它对你们中的一些人有所帮助。

    【讨论】:

      【解决方案4】:

      对于每条消息

      没有找到 X 的匹配分布

      你得到的,你必须手动做:

      1 - 在出现 X 的 requirements.txt 行,删除 ==<version number>
      2 - 保存文件
      3 - 提交
      4 - 推

      对提示报告的下一个错误再次执行此操作,直到到达requirements.txt 中包含的列表末尾。

      (如果您的 X 是 psycopg2,请将其替换为 psycopg2-binary)。


      安装运行pip-chill也可以达到同样的效果

      pip install pip_chill
      pip-chill --no-version > requirements.txt
      

      注意:这是最后一个资源的解决方案,所以在实施之前,看看你是否可以按照this answer的说明解决问题

      【讨论】:

      • 但是如果我需要那个包怎么办?
      • @Zeyad 只需从 requirements.txt 手动删除该软件包的 ==<version number> [答案已更新]
      【解决方案5】:

      该错误可能是由于Anaconda库发生了变化,1.4.0等版本被移除,不再存在。

      其中一些是:

      anaconda-client==1.7.2
      anaconda-navigator==1.9.7
      anaconda-project==0.8.2
      blaze==0.11.3    
      clyent==1.2.2    
      conda==4.9.2
      conda-build==3.20.5
      conda-package-handling==1.3.11
      ...
      

      (==removed versions)

      尝试通过 updating all the libraries in your environment 解决问题:

      conda update -n base conda
      conda update --all
      

      然后

      pip freeze>requirements.txt
      git add .
      git commit -m "something"
      git push heroku master
      

      【讨论】:

      • 这篇文章对我帮助很大,我从依赖列表中一一删除了所有导致错误的包。但令人惊讶的是,在成功安装最后一个包后,Heroku 继续安装了一些不在列表中的其他包。其中一个(python-javabridge)导致了一个我已经尝试了 2 天来解决的错误。现在,相反,我只是想弄清楚为什么 heroku 正在安装从列表中删除的软件包以及如何防止这种情况发生。任何见解将不胜感激!运行 git show requirements.txt 会显示更新后的文本文件。
      • 我写了第二个答案,因为第一个是“最后一个资源”解决方案。不要删除 requirements.txt 中列出的库,而是尝试更新它们。按照此答案中的说明进行操作
      • 对不起,我应该提一下,我按照您的建议先更新了所有软件包,错误仍然存​​在,直到我开始删除有问题的软件包。我正在尝试了解为什么继续安装不在列表中的其他软件包,我在网上找不到任何信息。
      • 在你更新它们之后你也添加并提交了?
      • 是的,我不确定我第一次做 git add 的时候是不是非常。更新 txt 文件后,但无论如何我不得不重新启动整个部署过程(包括关闭 Spyder),并使用更新的依赖项列表。执行 git show requirements.txt 确实显示了更新的列表,而不是原始列表。我在这里描述的 python-javabridge 错误:stackoverflow.com/questions/65594909/…
      【解决方案6】:
      Could not find a version that satisfies the requirement 
      anaconda-client==1.4.0 (from -r 
      /tmp/build_a1f6d188f9e0e61e01076a73d4e10542/requirements.txt (line 2))
      (from  versions: 1.1.1, 1.2.2)
      

      你好, 可能为时已晚,但对其他人有帮助。我遇到了同样的问题(但使用了不同的包),这就是我所做的(并且有效!)

      这个包是我项目的必需品,所以我不能删除它

      • 用requirments.txt 中的可用版本替换了我的包版本,在你的情况下是1.1.1 or 1.2.2
      • 然后git heroku master

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-08
        • 2020-02-16
        • 2023-03-20
        • 2021-12-25
        • 2018-10-13
        • 2019-07-18
        • 2020-04-15
        • 2015-11-24
        相关资源
        最近更新 更多