from pip._internal import main as call_pip
# call_pip(['foo', 'bar']) == pip foo bar
使用call_pip(['install', 'package'])
安装某些软件后,我想保留requirements.txt
中的更改:
from pip._internal.operations import freeze
with open('requirements.txt', 'w') as f:
for line in freeze.freeze():
f.write(line + '\n')
但是来自freeze
的数据已经过时,好像我在安装/更新新软件包之前运行了它。我还尝试了call_pip(['freeze'])
并将stdout流重定向到文件中,但是并没有解决问题。
在脚本安装后如何更新已安装的发行版列表?
答案 0 :(得分:2)
pip唯一受支持的接口是CLI。通过subprocess调用CLI可以解决您的问题。
阅读文档中的"Using pip from your program"部分。
...您不得以这种方式使用pip的内部API。造成这种情况的原因很多。...pip代码假定该代码完全由程序的全局状态控制。