如何检测脚本中的 python 包名

How to detect the python package name inside the script

我正在尝试在 python 脚本中安装 pip 库,所以我会发出命令:

os.system('python -m pip install requests > null 2>&1')

然而,此脚本将由不同主机上的不同用户 运行 和某些主机上的 python 软件包安装为 python2python3(与 pip) 而不仅仅是 python。这使得上面的命令不起作用,因为它没有检测到名称 python.

那么有什么方法可以检测客户端主机上的 python 软件包名称以便安装可以进行吗?

(我知道最好使用 subprocess 库来安装 pip 包,但出于特定原因我使用 os.system)。

您可以使用 sys.executable 获取 python 的完整路径:

>>> import sys
>>> sys.executable
'/home/***/.pyenv/versions/3.8.1/bin/python3.8'

然后使用该路径 运行 python

os.system('{} -m pip install requests > null 2>&1'.format(sys.executable))