【发布时间】: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 版本(可能是 subprocess 和 sys 模块已被修改)或者我的旧机器中是否有其他模块使其工作(@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