Bash脚本到Conda Install requirements.txt,附带PIP跟踪

2024-04-26 07:23:13 发布

您现在位置:Python中文网/ 问答频道 /正文

在linux服务器上安装Django应用程序的requirements.txt文件时,我可以运行:

conda install --yes --file requirements.txt

如果Conda(PackageNotFoundError)中没有任何包可用,则此操作将崩溃。这个bash one行是一个很酷的方式,一次一行地浏览requirements.txt文件source

while read requirement; do conda install --yes $requirement; done < requirements.txt

这将安装通过Conda可用的所有软件包,而不会在第一个丢失的软件包上崩溃。但是,我希望通过捕获Conda的输出来跟踪失败的包,如果存在PackageNotFoundError,则在包上运行pip install。

我对bash不太在行,所以希望有人能提出一个建议。另一个解决方案可能是编写一个名为pip-requirements.txt的新文本文件,其中包含失败的需求。


Tags: installpip文件djangotxtbash应用程序linux
3条回答

就我个人而言,我觉得水蟒的环境和包装管理非常出色。因此,如果使用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环境名称。这不是如何使用condaenvironment.yml文件的标准实践。理想情况下,每个python项目都应该有自己的environment.yml文件,该文件具有特定于项目的环境名称,即name: project-name。请通过https://conda.io/docs/user-guide/tasks/manage-environments.html使用水蟒进行包装管理。

找到解决方案:

如果conda无法使用包,请运行此命令以使用conda或pip安装:

while read requirement; do conda install --yes $requirement || pip install $requirement; done < requirements.txt 

完成后,可以使用conda导出环境yaml:

conda env export > environment.yml

将stderr重定向到文件:

while read requirement; do conda install --yes $requirement; done < requirements.txt 2>error.log

相关问题 更多 >