【问题标题】:Unable to automatically install python packages from script无法从脚本自动安装 python 包
【发布时间】:2021-10-12 12:19:28
【问题描述】:

我需要直接从脚本安装 Python 包。我知道这通常被视为不好的做法,但脚本需要完全独立。我尝试了这个我觉得很方便的选项:

import subprocess
import sys    
list_of_packages=['package_1', 'package_2', ... 'package_n']    
def install(package):
    subprocess.check_call([sys.executable, "-m", "pip", "install", package]
for package in list_of_packages:
    install(package)

这适用于安装了Python 3.8.3 的机器。但是,当我尝试在另一台安装了Python 3.10.0 的机器上执行脚本时,出现以下错误:

subprocess.CalledProcessError: Command '['[PYTHONPATH]\\pythonw.exe', '-m', 'pip', 'install', 'package_1']' returned non-zero exit status 2.

我不明白这是否是由于不同的 Python 版本(可能是 subprocesssys 模块已被修改)或者我的旧机器中是否有其他模块使其工作(@987654327 @最近刚刚安装在新机器上,还没有安装任何外部包)。

编辑:在 @Passi 的回答之后,我尝试重新安装 Python 并选中所需的框以将 pip 添加到 PATH 变量。不幸的是,这不起作用。我可以在命令提示符下手动安装软件包:

python -m pip install 'package_name'

但是当我从 IDLE 或命令提示符运行脚本时,我总是得到同样的错误。将 pip 更改为 pip3 也没有解决这个问题。

【问题讨论】:

  • 你是否为 Python 3.10 安装了 pip?检查运行python3.10 -m pip -v
  • @MatteoZanoni 是的,定期安装 pip

标签: python pip installation-package


【解决方案1】:

你可以试试 pip3。 重要的是 pip 或 pip3 作为 PATH 变量。 安装 Python 3.10 版后存在一个“错误”,即删除了 Python3 PATH 变量。

选中该框,您的点数将在PATHvariable 中

使用 PoweShell oder Bash 脚本执行类似操作会更好。

【讨论】:

  • 查看主要问题中的编辑。不幸的是,这不起作用
  • pip3 安装包是否正常工作
【解决方案2】:

我设法通过降级到 Python 3.8 解决了这个问题。似乎某些包与 Python 3.10 之间存在冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    相关资源
    最近更新 更多