使用 python 子进程检查 pip 是不是安装在 Windows 上
Posted
技术标签:
【中文标题】使用 python 子进程检查 pip 是不是安装在 Windows 上【英文标题】:Check if pip is installed on Windows using python subprocess使用 python 子进程检查 pip 是否安装在 Windows 上 【发布时间】:2018-11-23 10:44:39 【问题描述】:我正在使用 python 来检查系统上是否安装了 pip。 我写的代码是:
subprocess.run(["pip"],shell=True)
我收到以下错误:
'pip' 未被识别为内部或外部命令, 可运行的程序或批处理文件。
我已经尝试通过我的系统环境来运行使用
env = os.environ.copy()
subprocess.run(["pip"],shell=True,env=env)
但仍然没有运气。 我使用 get-pip.py 在我的 Windows 机器上安装了 pip
【问题讨论】:
【参考方案1】:如果CreateProcess
(subproces.run
调用)不将 pip 识别为命令,它可能会识别 python?所以你可以这样做:subprocess.run(['python3', '-m', 'pip'])
也许?
【讨论】:
谢谢@Alper。我刚刚意识到我的命令在 IntelliJ ide 中不起作用,但在 cmd 中起作用。甚至您的命令也可以在 cmd 中运行。有什么我可以做的,以便我可以在 IDE 中看到结果吗? 取决于 IntelliJ 在什么样的环境中运行它。我周围没有副本。'【参考方案2】:您需要将 pip 安装路径添加到 PATH 系统变量中。输入 echo $PATH$ 检查它是否已经存在。
【讨论】:
PATH 上没有任何内容。我通过转到 System>Environment Variables 并编辑和添加来手动设置 PATH 变量。 python 在那里,但当我回显 $PATH$ 时,即使它也没有出现。我可以在 cmd 上调用 pip 和 python。【参考方案3】:在 Windows 上,pip
不一定会在PATH
环境变量中,因此简单运行pip
可能找不到它。
如果pip
安装在当前运行的Python中,你应该可以导入它的模块:
pip_present = True
try:
import pip
except ImportError:
pip_present = False
如果你想使用subprocess
运行它,你可以使用sys
中的东西来获取它相对于当前运行的Python 的通常位置:
pip_path = os.path.join(os.path.dirname(sys.executable), "Scripts", "pip.exe")
subprocess.run([pip_path])
【讨论】:
我想知道是否有更规范的方法来获取当前解释器的 Python bin/Scripts 目录的路径(因为名称取决于操作系统。)以上是关于使用 python 子进程检查 pip 是不是安装在 Windows 上的主要内容,如果未能解决你的问题,请参考以下文章