【问题标题】: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

【问题讨论】:

    标签: python python-3.x intellij-idea subprocess


    【解决方案1】:

    如果CreateProcesssubproces.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 目录的路径(因为名称取决于操作系统。)
    猜你喜欢
    • 1970-01-01
    • 2017-04-13
    • 2019-01-21
    • 1970-01-01
    • 2019-09-22
    • 2020-10-20
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    相关资源
    最近更新 更多