ไม่พบรุ่นที่ตรงตามข้อกำหนด <package>


139

ฉันกำลังติดตั้งแพ็กเกจ Python หลาย ๆ ตัวใน Ubuntu 12.04 โดยใช้requirements.txtไฟล์ต่อไปนี้:

numpy>=1.8.2,<2.0.0
matplotlib>=1.3.1,<2.0.0
scipy>=0.14.0,<1.0.0
astroML>=0.2,<1.0
scikit-learn>=0.14.1,<1.0.0
rpy2>=2.4.3,<3.0.0

และทั้งสองคำสั่ง:

$ pip install --download=/tmp -r requirements.txt
$ pip install --user --no-index --find-links=/tmp -r requirements.txt

(อันแรกดาวน์โหลดแพ็คเกจและอันที่สองติดตั้ง)

กระบวนการหยุดทำงานบ่อยครั้งพร้อมกับข้อผิดพลาด:

  Could not find a version that satisfies the requirement <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2)) (from versions: )
No matching distribution found for <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2))

ซึ่งฉันแก้ไขด้วยตนเองด้วย:

pip install --user <package>

จากนั้นเรียกใช้pip installคำสั่งที่สองอีกครั้ง

แต่ที่ทำงานเฉพาะสำหรับที่แพคเกจโดยเฉพาะอย่างยิ่ง เมื่อฉันเรียกใช้pip installคำสั่งที่สองอีกครั้งกระบวนการจะหยุดในขณะนี้บ่นเกี่ยวกับแพคเกจที่จำเป็นอื่นและฉันต้องทำซ้ำกระบวนการอีกครั้งเช่น: ติดตั้งแพคเกจที่จำเป็นใหม่ด้วยตนเอง (ด้วยคำสั่งข้างต้น) แล้วเรียกใช้pip installคำสั่งที่สอง

จนถึงขณะนี้ผมได้มีการติดตั้งด้วยตนเองsix, pytz, และตอนนี้ก็บ่นเกี่ยวกับต้องnosemock

มีวิธีบอกpipให้ติดตั้งการพึ่งพาที่จำเป็นทั้งหมดโดยอัตโนมัติหรือไม่ดังนั้นฉันไม่ต้องทำด้วยตนเองทีละรายการ

เพิ่ม : สิ่งนี้จะเกิดขึ้นใน Ubuntu 12.04 BTW เท่านั้น ใน Ubuntu 14.04 pip installคำสั่งที่ใช้กับrequirements.txtไฟล์ทำงานโดยไม่มีปัญหา


1
บางครั้งโครงการ Django ของคุณอาจขึ้นอยู่กับแพ็คเกจการชงในท้องถิ่น ตรวจสอบอีกครั้งว่าคุณได้ติดตั้งสิ่งเหล่านี้แล้ว!
James111

ฉันมีปัญหาเดียวกันกับ 'python -m pip install flask' ฉันสามารถติดตั้งได้
Freelancer

คำตอบ:


47

วิธีนี้ (มีการอ้างอิงทั้งหมดในไดเรกทอรีและไม่ดาวน์โหลดจากดัชนี) จะทำงานเฉพาะเมื่อไดเรกทอรีมีแพ็คเกจทั้งหมด ไดเรกทอรีควรมีการอ้างอิงทั้งหมด แต่ยังรวมถึงแพ็คเกจทั้งหมดที่การพึ่งพาเหล่านั้นขึ้นอยู่กับ (เช่นsix, pytzฯลฯ )

คุณควรรวมสิ่งเหล่านี้ด้วยตนเองrequirements.txt(เพื่อให้ขั้นตอนแรกดาวน์โหลดอย่างชัดเจน) หรือคุณควรติดตั้งแพคเกจทั้งหมดโดยใช้ PyPI และจากนั้นpip freeze > requirements.txtเพื่อเก็บรายการของแพ็คเกจทั้งหมดที่จำเป็น


ดังนั้นวิธีเดียวที่จะหาที่ทุกความต้องการที่มีคือการfreezeแพคเกจติดตั้งในการทำงานติดตั้งและจากนั้นเพิ่มทุกอย่างที่อยู่ในนั้นไปยังrequirements.txtไฟล์?
กาเบรียล

2
@Gabriel: ในปัจจุบันมีการติดตั้งแพ็กเกจ Python จำนวนมากโดยการเรียกใช้setup.pyไฟล์ที่มีการขึ้นต่อกันที่พวกเขาต้องการ สิ่งนี้น่าจะดีขึ้นเมื่อแพ็กเกจ Python กลายเป็นไฟล์วีล ( pythonwheels.com ) ซึ่งอนุญาตให้คุณรวบรวมรายการของแพ็คเกจที่จำเป็นทั้งหมดโดยไม่ต้องใช้รหัสโดยอำเภอใจในsetup.pyไฟล์
Simeon Visser

1
ขอบคุณสำหรับคำอธิบายสิเมโอน อีกอย่างถ้าคุณไม่สนใจ: ทำไมสิ่งนี้ไม่เกิดขึ้นใน Ubuntu 14.04 แต่มันเกิดขึ้นใน Ubuntu 12.04
กาเบรียล

4
@ กาเบรียล: ฉันไม่แน่ใจ - จากประสบการณ์ของฉันpipมักจะยกเลิกเมื่อไม่สามารถหาแพ็คเกจที่จะติดตั้งได้ การพูดpipอย่างนั้นกำลังได้รับการพัฒนาอย่างต่อเนื่องดังนั้นอาจเป็นได้ว่าคุณมีเวอร์ชันที่ฉันไม่ได้ทำงาน
Simeon Visser

@SimeonVisser, "[ล้อ] อนุญาตให้คุณรวบรวมรายการของแพ็คเกจที่จำเป็นทั้งหมดโดยไม่ต้องใช้รหัสโดยพลการ" น่าสนใจและแบ่งปันความคิดว่าจะทำอย่างไร (โดยตอนนี้)?
sschuberth

39

ฉันติดตั้ง python3 แล้ว แต่ python ของฉันใน / usr / bin / python ยังคงเป็นรุ่น 2.7 เดิม

นี้ทำงาน ( <pkg>เป็นpyserialในกรณีของฉัน):

python3 -m pip install <pkg>

1
สิ่งนี้เกิดขึ้นเมื่อ setuptools มีpython_requires='>=3.0'ข้อกำหนด
Juan-Kabbali

11

หลังจากการค้นหา 2 ชั่วโมงฉันพบวิธีแก้ไขด้วยคำสั่งหนึ่งบรรทัด คุณจำเป็นต้องรู้รุ่นของแพ็คเกจ (เพียงค้นหารุ่นแพ็คเกจ)

คำสั่ง:

python3 -m pip install --pre --upgrade PACKAGE==VERSION.VERSION.VERSION


4

ลองติดตั้งกระติกน้ำผ่าน PowerShell โดยใช้คำสั่งต่อไปนี้

pip install --isolated Flask

สิ่งนี้จะช่วยให้การติดตั้งเพื่อหลีกเลี่ยงตัวแปรสภาพแวดล้อมและการกำหนดค่าของผู้ใช้


3

ไม่เสมอไป แต่ในบางกรณีแพคเกจนั้นมีอยู่แล้ว ตัวอย่างเช่น - getpass ไม่ได้อยู่ในรายการ "pip list" แต่สามารถนำเข้าและใช้งานได้:

ป้อนคำอธิบายรูปภาพที่นี่

ถ้าฉันพยายาม pip installpass pass ฉันได้รับข้อผิดพลาดต่อไปนี้: "ไม่พบรุ่นที่ตรงตามข้อกำหนด getpass"


1

ฉันได้รับข้อผิดพลาดนี้ขณะติดตั้งawscliบน Windows 10 ในแอนาคอนดา (python 3.7) ในขณะที่การแก้ไขปัญหาผมไปคำตอบhttps://stackoverflow.com/a/49991357/6862405แล้วhttps://stackoverflow.com/a/54582701/6862405 ในที่สุดก็พบว่าผมจำเป็นต้องติดตั้งห้องสมุดPyOpenSSL, cryptography, enum34, และidna ipaddressหลังจากติดตั้งเหล่านี้ (โดยใช้pip installคำสั่งเพียงอย่างเดียว) ฉันก็สามารถติดตั้งawscliได้


1

หากคุณประสบปัญหานี้ในที่ทำงาน นี่อาจเป็นทางออกสำหรับคุณ

pip install -U <package_name> --user --proxy=<your proxy>


-6

ใช้พรอมต์คำสั่งแล้วเลือกเรียกใช้ในฐานะผู้ดูแล

อัพเกรดเวอร์ชั่น pip

ในการอัพเกรด PIP ให้พิมพ์คำสั่งนี้แล้วกด Enter: -

python.exe -m pip install - อัพเกรด pip

กลับไปที่เส้นทางหลาม C: \ Users \ Jack \ AppData \ Local \ Programs \ Python \ Python37 \ Scripts

พิมพ์สมุดบันทึก jupyter

คุณจะถูกเปลี่ยนเส้นทางไปที่http: // localhost: 8888 / undefined / tree - Jupyter Home Page

หวังว่ามันจะช่วย !!!!!!!!!!!


2
จูปีเตอร์ทำอะไรกับเรื่องนี้ ??
Bzazz

การอัพเกรด pip สามารถแก้ไขปัญหาการพึ่งพาได้อย่างไร? มันต้องมีการอ้างอิงในไดเรกทอรีโทร
Rizwan Javid

-7

อาจช่วย

sudo pip install wheel == 0.29.0


4
ขออภัย .. ฉันไม่ได้อ่านภาษาจีนหรือภาษาเอเชียอื่น ๆ .. ลิงก์ผู้แนะนำอาจแตกในอนาคต ... กรุณาโพสต์สิ่งจำเป็นที่นี่ ในฐานะที่โพสต์คำตอบที่มีคุณภาพต่ำโดยไม่มีบริบท
ZF007

1
ลิงค์อ้างอิงเป็นภาษาญี่ปุ่น ... โปรดพิจารณาแชร์ลิงค์เป็นภาษาอังกฤษ
javidazac

6
รหัสนี้เป็นที่เข้าใจได้สำหรับนักพัฒนาซอฟต์แวร์ทั้งหมดและจำนวนภาษาญี่ปุ่นนั้นน้อยมากและน้อยมากที่ชื่อจะแนะนำรหัสต่อไปนี้ (แปลว่ามันยากเกินไปสำหรับคุณ แต่คุณไม่จำเป็นต้องทำเช่นนั้นเพื่อทำความเข้าใจว่าเกิดอะไรขึ้น) ไม่ควรมีปัญหากับภาษาอื่น ๆ นอกเหนือจากภาษาอังกฤษที่ใช้อยู่ตราบใดที่ตัวอย่างรหัสชัดเจนและไม่สมบูรณ์ขึ้นอยู่กับภาษาต่างประเทศที่ใช้
rg88

6
@ rg88 นั้นจะดีสำหรับความคิดเห็น (อาจมีข้อแม้) แต่คำตอบใน Stack Overflow ควรอยู่ในตัวเองและเชื่อ
tripleee
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.