我用subprocess模块调用不同的进程.但是,我有一个问题.
在以下代码中:
callProcess = subprocess.Popen(['ls', '-l'], shell=True)
Run Code Online (Sandbox Code Playgroud)
和
callProcess = subprocess.Popen(['ls', '-l']) # without shell
Run Code Online (Sandbox Code Playgroud)
两者都有效.阅读文档后,我开始知道这shell=True意味着通过shell执行代码.这意味着在缺席的情况下,该过程将直接启动.
那么我应该更喜欢我的情况 - 我需要运行一个进程并获得其输出.从shell内部或外部调用它有什么好处.
我正在从requirements.txt安装包
pip install -r requirements.txt
requirements.txt文件读取:
Pillow
lxml
cssselect
jieba
beautifulsoup
nltk
Run Code Online (Sandbox Code Playgroud)
lxml是唯一一个无法安装的软件包,这导致一切都失败了(预期结果如评论中的larsks所指出的).但是,lxml失败后pip仍会运行并下载其余的软件包.
根据我的理解,pip install -r requirements.txt如果requirements.txt无法安装中列出的任何软件包,该命令将失败.
在运行时是否可以传递任何参数pip install -r requirements.txt,告诉它安装它可以并跳过它不能的包,或者一看到它失败就立即退出?