通过python脚本安装软件包后,如何更新pip的已安装发行版列表?

时间:2019-08-08 18:24:47

标签: python pip

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流重定向到文件中,但是并没有解决问题。

在脚本安装后如何更新已安装的发行版列表?

1 个答案:

答案 0 :(得分:2)

pip唯一受支持的接口是CLI。通过subprocess调用CLI可以解决您的问题。

阅读文档中的"Using pip from your program"部分。

  

...您不得以这种方式使用pip的内部API。造成这种情况的原因很多。...pip代码假定该代码完全由程序的全局状态控制。