在Python代码中使用`pip freeze> requirements`

Mik*_*Sam 0 python pip python-3.x

我在代码中找到了如何使用pip命令:

import subprocess
subprocess.call(["pip", "freeze"])
Run Code Online (Sandbox Code Playgroud)

它在命令提示符下显示所有包.

但它不能这样工作:

import subprocess
subprocess.call(["pip", "freeze", ">", "requirements.txt"])
Run Code Online (Sandbox Code Playgroud)

它不会将其写入文件,它会再次在控制台中打印.

如何以正确的方式运行此命令?

han*_*olo 7

用这个:

>>> with open('requirements.txt', 'w') as file_:
...   subprocess.Popen(['pip', 'freeze'], stdout=file_).communicate()
...
Run Code Online (Sandbox Code Playgroud)

或者,call如果你愿意的话

>>> with open('requirements.txt', 'w') as file_:
    ...   subprocess.call(['pip', 'freeze'], stdout=file_)
Run Code Online (Sandbox Code Playgroud)


Ale*_*all 5

重定向是在 shell/终端中实现的,这意味着命令必须使用shell=True关键字参数在 shell 中执行。否则,子进程执行列表中的第一项,并使用其余项作为其参数。有关更多信息,请参阅子流程的文档。

subprocess.call("pip freeze > requirements.txt", shell=True)
Run Code Online (Sandbox Code Playgroud)