我们在python中的软件有大约5个依赖项。今年,为了帮助新学生加入我们的项目,我们希望创建一个安装程序,它将通过经典的requirements.txt文件方法获取所有依赖项。
然后,我希望创建一个批处理和bash脚本,它将遍历requirements.txt并安装依赖项。
现在我已设法编写脚本,可以conda install ...
或pip3 install ...
,但两个单独的命令文件。考虑选择哪个软件包管理器我希望尽可能多的自由,所以我想知道是否有办法让控制台使用默认的conda,如果它失败则使用pip3?
例如:我没有设法用conda安装pyqt5但是用pip3成功了。
这是我的批处理脚本:
@echo off
for /F "tokens=*" %%A in (requirements.txt) do (conda install --yes %%A)
pause
这是bash脚本:
while read requirement; do conda install --yes $requirement; done < requirements.txt
最后我的要求.txt内容:
pySerial
pyQt5
pyopenGL
pyproj
pyqtgraph
答案 0 :(得分:0)
在批处理中,如果action_a失败,您可以使用action_a || action_b
执行action_b。对于你的脚本,那将是
for /F "tokens=*" %%A in (requirements.txt) do (conda install --yes %%A || pipe %%A)
Bash也有类似的功能。
while read requirement; do conda install --yes $requirement || pip3 $requirement; done < requirements.txt
(请注意,我不确定pip3
的语法,因此请相应更改)