【发布时间】:2014-04-10 14:57:51
【问题描述】:
我正在从requirements.txt 安装软件包
pip install -r requirements.txt
requirements.txt 文件内容如下:
Pillow
lxml
cssselect
jieba
beautifulsoup
nltk
lxml 是唯一无法安装的软件包,这会导致一切都失败(正如 larsks 在 cmets 中指出的预期结果)。但是,lxml 失败后,pip 仍然运行并下载其余的包。
据我了解,如果requirements.txt 中列出的任何软件包安装失败,pip install -r requirements.txt 命令将失败。
在运行pip install -r requirements.txt 时,我是否可以传递任何参数来告诉它安装它可以安装的内容并跳过它不能安装的软件包,或者在它看到失败时立即退出?
【问题讨论】:
-
从你的 requirements.txt 中删除 lxml
-
谢谢,这在这种情况下会起作用,但总的来说,有什么办法可以解决这个问题吗?还是只是运行命令,看到它失败然后修剪包列表是正常的?
-
如果包在
requirements.txt中列出,它可能是必需的,因此如果无法安装包,pip将失败是有道理的。如果代码在没有该包的情况下仍然运行,那么它几乎不是必需的。从requirements.txt随机修剪失败的包似乎只会导致缺少依赖项的问题。 -
@larsks 对于单个开发环境或包,拥有多个 requirements.txt 文件是很常见的。例如,可能有一个完整的可选工具可用于增强单元/集成测试环境或性能分析,但并非严格要求。您仍然希望对表示这些包和任何固定版本的单个源文件进行版本控制,并依赖相同的
pip install -r <some file>工作流来标准化相应环境的创建。 -
鉴于此,建议 pip 不应该支持某种类型的优雅失败/可选的跳过行为,它会打印警告但安装它可以安装的东西,这似乎是非常聋的。这正是从需求文件中进行这种基于 pip 的安装的常见需求。