在 Linux 服务器上为 Django 应用程序安装 requirements.txt 文件时,我可以运行:
conda install --yes --file requirements.txt
如果任何包无法通过 Conda (PackageNotFoundError
) 使用,这将崩溃。这个 bash one liner 是一次一行浏览 requirements.txt 文件的好方法 source :
while read requirement; do conda install --yes $requirement; done < requirements.txt
这将安装通过 Conda 可用的所有包,而不会在第一个丢失的包上崩溃。但是,我想通过捕获 Conda 的输出来跟踪失败的包,如果有 PackageNotFoundError
然后在包上运行 pip install。
我对 bash 不是很好,所以希望有人可以建议 hack。另一种解决方案可能是只写一个名为 pip-requirements.txt
的新文本文件,其中包含失败的要求。
最佳答案
我个人认为 Anaconda 环境和包管理非常出色。因此,如果您使用 conda
命令在您的 python 环境中更新您的包,那么我建议使用 environment.yml
文件而不是 requirements.txt
.
environment.yml
应该如下所示:
name: root # default is root
channels:
- defaults
dependencies: # everything under this, installed by conda
- numpy==1.13.3
- scipy==1.0.0
- pip: # everything under this, installed by pip
- Flask==0.12.2
- gunicorn==19.7.1
安装命令:
conda env update --file environment.yml
备注:
这里我们设置了 name: root
这是默认的 anaconda 环境名称。这不是如何使用 conda
和 environment.yml
文件的标准做法。理想情况下,每个 Python 项目都应该有自己的 environment.yml
文件,其中包含项目特定的环境名称,即 name: project-name
。请通过https://conda.io/docs/user-guide/tasks/manage-environments.html关于使用 Anaconda 进行包管理。
关于python - Bash 脚本到 Conda 安装 requirements.txt 与 PIP 跟进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47999477/