繁体   English   中英

无法从脚本自动安装 python 包

[英]Unable to automatically install python packages from script

我需要直接从脚本安装 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 也无法解决此问题。

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

epython 安装程序 img

选中该框,您的 pip 将位于PATH变量中

当您使用 PoweShell 或 Bash 脚本执行类似操作时会更好。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM