如何在Python代码里面调用 pip安装第三方库

说到安装 Python 的第三方库,会 Python 的同学都知道,在终端使用pip install xxx即可。

那么如果我想在代码里面安装第三方库怎么办呢?可能有人想到使用 os 模块:

1
2
3
import os
package_name = 'requests'
os.system(f'pip install {package_name}')

这种方法确实可行,并且即使你在虚拟环境中使用这种方式安装,也确实不会安装到系统的 Python 环境中。

但是这种方式总感觉有点奇怪。而且如果这个package_name字符串经过精心构造,可以执行任意系统命令,例如:

1
2
3
import os
package_name = 'requests && rm -rf *'
os.system(f'pip install {package_name}')

为了防止这种情况发生,我们可以直接调用pip这个 Python 包:

1
2
3
from pip._internal import main

main.main(['install', '第三方库名'])

运行效果如下图所示:

命令行下面的参数都可以通过转换为列表的形式执行,例如:

1
2
3
from pip._internal import main

main.main(['install', '-r', 'requirements.txt'])