pip install -r requirements.txt時(shí)遇到報(bào)錯(cuò)自動(dòng)跳過(guò)
1,問(wèn)題背景
在嘗試復(fù)制一個(gè)環(huán)境時(shí),導(dǎo)出所有 Python 庫(kù)為 requirements.txt
文件,打算使用 pip install -r requirements.txt
進(jìn)行安裝。但如果遇到某個(gè)庫(kù)安裝失敗,程序會(huì)中斷,例如出現(xiàn) ERROR: Could not find a version that satisfies the requirement anaconda-navigator
錯(cuò)誤,導(dǎo)致后續(xù)的庫(kù)無(wú)法安裝。
2,原因
anaconda-navigator
不是通過(guò) pip
安裝的,而是通過(guò) Anaconda 或 Miniconda 安裝的。因此,pip
無(wú)法找到該包并報(bào)錯(cuò)。
3,解決方法
pip
本身沒(méi)有提供跳過(guò)錯(cuò)誤的選項(xiàng),但可以通過(guò)以下方法間接實(shí)現(xiàn):
使用 --ignore-installed
和 --no-deps
選項(xiàng)
pip install --ignore-installed --no-deps -r requirements.txt
--ignore-installed
:忽略已安裝包。--no-deps
:不安裝依賴(lài)包,減少?zèng)_突。
增加重試次數(shù)和超時(shí)時(shí)間
pip install --retries 5 --timeout 60 -r requirements.txt
--retries
:設(shè)置重試次數(shù)。--timeout
:設(shè)置超時(shí)時(shí)間。
使用 Python 腳本逐個(gè)安裝
編寫(xiě)腳本逐行安裝庫(kù),并在遇到錯(cuò)誤時(shí)跳過(guò)。
import subprocess with open("requirements.txt", "r") as f: for line in f: package = line.strip() if not package: continue try: print(f"Installing {package}...") subprocess.check_call(["pip", "install", package]) except subprocess.CalledProcessError as e: print(f"Error installing {package}: {e}") print("Skipping and continuing...")
使用 pip-tools
和 pip-sync
安裝 pip-tools
并使用 pip-sync
安裝依賴(lài)。
pip install pip-tools pip-sync requirements.txt
手動(dòng)編輯 requirements.txt
注釋掉無(wú)法安裝的庫(kù):
# anaconda-navigator numpy pandas
然后重新運(yùn)行安裝命令。
進(jìn)一步添加日志
新增了一個(gè)變量pip_source,用于指定安裝源(例如阿里云的鏡像源);
如果某個(gè)庫(kù)安裝失敗,將其名稱(chēng)寫(xiě)入failed_packages.txt文件中;
如果某個(gè)庫(kù)安裝失敗,將錯(cuò)誤信息寫(xiě)入failed_logs.txt文件中,方便后續(xù)排查問(wèn)題。
import subprocess # 定義保存失敗庫(kù)和日志的文件路徑 failed_packages_file = "failed_packages.txt" failed_logs_file = "failed_logs.txt" # 指定安裝源 pip_source = "https://mirrors.aliyun.com/pypi/simple/" # 打開(kāi)文件用于記錄失敗的庫(kù)和日志 with open(failed_packages_file, "w", encoding="utf-8") as failed_packages_f, \ open(failed_logs_file, "w", encoding="utf-8") as failed_logs_f: with open("requirements.txt", "r", encoding="utf-8") as f: for line in f: package = line.strip() if not package: continue try: print(f"正在安裝 {package}...") # 使用指定的安裝源 subprocess.check_call(["pip3", "install", package, "-i", pip_source]) print(f"{package} 安裝成功!") except subprocess.CalledProcessError as e: print(f"安裝 {package} 時(shí)出錯(cuò): {e}") print("跳過(guò)并繼續(xù)安裝其他庫(kù)...") # 記錄失敗的庫(kù) failed_packages_f.write(package + "\n") # 記錄失敗的日志 failed_logs_f.write(f"安裝 {package} 時(shí)出錯(cuò):\n") failed_logs_f.write(str(e) + "\n") failed_logs_f.write("-" * 50 + "\n") print(f"安裝失敗的庫(kù)已保存到 {failed_packages_file}") print(f"安裝失敗的日志已保存到 {failed_logs_file}")
到此這篇關(guān)于pip install -r requirements.txt時(shí)遇到報(bào)錯(cuò)自動(dòng)跳過(guò)的文章就介紹到這了,更多相關(guān)pip install -r requirements.txt報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?計(jì)算機(jī)視覺(jué)編程進(jìn)階之OpenCV?圖像銳化及邊緣檢測(cè)
計(jì)算機(jī)視覺(jué)這種技術(shù)可以將靜止圖像或視頻數(shù)據(jù)轉(zhuǎn)換為一種決策或新的表示。所有這樣的轉(zhuǎn)換都是為了完成某種特定的目的而進(jìn)行的,本篇我們來(lái)學(xué)習(xí)下如何對(duì)圖像進(jìn)行銳化處理以及如何進(jìn)行邊緣檢測(cè)2021-11-11Python關(guān)于時(shí)間序列calendar模塊的深入講解
calendar,是與日歷相關(guān)的模塊。calendar模塊文件里定義了很多類(lèi)型,主要有Calendar,TextCalendar以及HTMLCalendar類(lèi)型。其中,Calendar是TextCalendar與HTMLCalendar的基類(lèi)2021-11-11python中如何使用xml.dom.minidom模塊讀取解析xml文件
xml.dom.minidom模塊應(yīng)該是內(nèi)置模塊不用下載安裝,本文給大家介紹python中如何使用xml.dom.minidom模塊讀取解析xml文件,感興趣的朋友一起看看吧2023-10-10Python實(shí)現(xiàn)PC屏幕截圖并自動(dòng)發(fā)送郵件
在當(dāng)前的數(shù)字化世界中,自動(dòng)化已經(jīng)成為我們?nèi)粘I詈凸ぷ髦械年P(guān)鍵部分,本文我們將探討如何使用Python來(lái)實(shí)現(xiàn)一個(gè)特定的自動(dòng)化任務(wù) - PC屏幕截圖自動(dòng)發(fā)送到指定的郵箱,感興趣的可以了解下2023-11-11Pytest測(cè)試報(bào)告工具Allure用法介紹
這篇文章介紹了Pytest測(cè)試報(bào)告工具Allure的用法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07使用Python進(jìn)行新浪微博的mid和url互相轉(zhuǎn)換實(shí)例(10進(jìn)制和62進(jìn)制互算)
我們?cè)谑褂眯吕宋⒉〢PI時(shí),有時(shí)需要得到一個(gè)微博的url,但是如statuses/public_timeline等接口中取得的微博status的字段中并沒(méi)有包含2014-04-04python中h5py開(kāi)源庫(kù)的使用樣例詳解
這篇文章主要介紹了python中的h5py開(kāi)源庫(kù)的使用,本文只是簡(jiǎn)單的對(duì)h5py庫(kù)的基本創(chuàng)建文件,數(shù)據(jù)集和讀取數(shù)據(jù)的方式進(jìn)行介紹,需要的朋友可以參考下2022-05-05