如何从 requirements.txt 安装软件包

30

我需要从提供给我的requirements文件中安装Python包。然而,当我使用pip install -r requirements.txt命令时,会出现错误提示:ERROR: Invalid requirement (from line 3 in requirements.txt。当我注释掉第三行时,错误仍然会继续出现在接下来的行中。这是什么意思,我该如何从文件中安装包?

文件内容如下:

# Name                    Version                   Build  Channel
alabaster                 0.7.12                   py36_0
altgraph                  0.17                     pypi_0    pypi
appdirs                   1.4.4                      py_0
argh                      0.26.2                   py36_0
astroid                   2.4.2                    py36_0
async_generator           1.10             py36h28b3542_0
atomicwrites              1.4.0                      py_0
attrs                     20.3.0             pyhd3eb1b0_0
auto-py-to-exe            2.7.11                   pypi_0    pypi
autopep8                  1.5.4                      py_0
babel                     2.9.0              pyhd3eb1b0_0
backcall                  0.2.0                      py_0
bcrypt                    3.2.0            py36he774522_0
black                     19.10b0                    py_0
bleach                    3.2.2              pyhd3eb1b0_0
bottle                    0.12.19                  pypi_0    pypi
... So on

我正在使用Anaconda中的新环境,Python版本为3.6.12


4
这不是一个有效的需求文件。要创建一个,使用 pip freeze 而不是 pip list - Klaus D.
哦,那真不幸。那么如果我想安装这些软件包,现在该怎么办呢?有没有什么方法可以将其转换为正确的格式?实际上,我并不是这个软件的创建者,我是按照要求提供的。 - harry r
3个回答

51

首先,使用以下命令将所有pip软件包在requirements.txt文件中冻结:

pip freeze > requirements.txt

这应该会以正确的格式创建requirements.txt文件。然后尝试使用以下命令进行安装

pip install -r requirements.txt

运行此命令时,请确保您与文件在同一文件夹中。

如果requirements.txt文件中的版本号被替换为某个路径名,则使用此pip命令进行解决。

pip list --format=freeze > requirements.txt

嘿,我使用了你的解决方案,现在新的txt文件有一些看起来像这样的包:absl-py @ file:///D:/bld/absl-py_1606235847480/work aiohttp @ file:///D:/bld/aiohttp_1614281175709/work alabaster==0.7.12 appdirs @ file:///home/conda/feedstock_root/build_artifacts/appdirs_1603108395799/work argh @ file:///home/conda/feedstock_root/build_artifacts/argh_1595627874344/work argon2-cffi @ file:///D:/bld/argon2-cffi_1605217285838/work 应该是版本号,但它给了我一些我不知道的文件位置。 - harry r
4
显然这是pip的一个未解决问题。使用命令pip list --format=freeze > requirements.txt可以解决该问题。更多信息可在此处找到:https://dev59.com/VVIG5IYBdhLWcg3wzEvT - revmatcher
这将获取所有的 Python 操作系统依赖项,而不是项目本身。 - JRichardsz

5

将您的 requirements.txt 内容更改为以下内容,然后再次尝试 pip install -r requirements.txt

alabaster==0.7.12
altgraph==0.17
appdirs== 1.4.4
argh==0.26.2
astroid== 2.4.2
async_generator==1.10
atomicwrites==1.4.0
attrs==20.3.0
auto-py-to-exe==2.7.11
autopep8==1.5.4
babel==2.9.0
backcall==0.2.0
bcrypt==3.2.0
black==19.10b0
bleach==3.2.2
bottle==0.12.19

我知道这是正确的格式。如果列表很长,我本来会自己做的。手动完成这项任务似乎不太实际。我该如何进行更改?有没有使用Python命令/包转换文件的方法? - harry r
你不应该手动更改文件的内容,对吧?为什么不使用 pip freeze > requirements.txt 呢? - revmatcher
1
@harryr 是的,我建议使用手动选项,假设您的conda环境未安装这些软件包。但是,如果这些软件包已经安装在环境中,则可以按照revmatcher建议的步骤进行操作。 - Rabindra

3
如果您使用Anaconda进行环境管理,那么您很可能通过以下方式创建了requirements.txt文件: conda list --explicit > requirements.txt 要使用所有列出的软件包重新创建该环境,请使用以下命令: conda env create --file requirements.txt 请参见CONDA CHEAT SHEET

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接