簡體   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