首页 > 解决方案 > 无法从脚本自动安装 python 包

问题描述

我需要直接从脚本安装 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模块已被修改)或者我的旧机器中是否有其他模块使其工作(Python 3.10.0最近刚刚安装在新机器上并且没有外部软件包已安装)。

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

python -m pip install 'package_name'

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

标签: pythonpipinstallation-package

解决方案


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

epython 安装程序 img

选中该框,您的点子将在PATH变量中

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


推荐阅读