Không thể tìm thấy phiên bản thỏa mãn yêu cầu <gói>


139

Tôi đang cài đặt một số gói Python trong Ubuntu 12.04 bằng requirements.txttệp sau :

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

và hai lệnh này:

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

(cái đầu tiên tải xuống các gói và cái thứ hai cài đặt chúng).

Quá trình thường xuyên bị dừng với lỗi:

  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))

mà tôi sửa bằng tay với:

pip install --user <package>

và sau đó chạy pip installlệnh thứ hai một lần nữa.

Nhưng điều đó chỉ hoạt động cho rằng gói cụ thể. Khi tôi chạy pip installlại lệnh thứ hai , quy trình bị dừng ngay bây giờ phàn nàn về một gói bắt buộc khác và tôi cần lặp lại quy trình một lần nữa, tức là: cài đặt gói yêu cầu mới theo cách thủ công (với lệnh ở trên) và sau đó chạy pip installlệnh thứ hai .

Cho đến nay tôi đã phải tự cài đặt six, pytz, nose, và bây giờ nó phàn nàn về việc cần mock.

Có cách nào để piptự động cài đặt tất cả các phụ thuộc cần thiết để tôi không phải thực hiện từng bước một không?

Thêm : Điều này chỉ xảy ra trong Ubuntu 12.04 BTW. Trong Ubuntu 14.04, các pip installlệnh được áp dụng trên requirements.txttệp hoạt động mà không gặp sự cố.


1
Đôi khi dự án Django của bạn có thể phụ thuộc vào các gói bia địa phương. Kiểm tra kỹ bạn đã cài đặt chưa!
James111

tôi gặp vấn đề tương tự, với 'python -m pip install Vase' tôi đã có thể cài đặt nó
Freelancer

Câu trả lời:


47

Cách tiếp cận này (có tất cả các phụ thuộc trong một thư mục và không tải xuống từ một chỉ mục) chỉ hoạt động khi thư mục chứa tất cả các gói. Do đó, thư mục nên chứa tất cả các phụ thuộc nhưng cũng có tất cả các gói mà các phụ thuộc đó phụ thuộc vào (ví dụ six, pytzv.v.).

Do đó, bạn nên bao gồm các mục này theo cách thủ công requirements.txt(để bước đầu tiên tải xuống chúng một cách rõ ràng) hoặc bạn nên cài đặt tất cả các gói bằng PyPI và sau đó pip freeze > requirements.txtđể lưu trữ danh sách tất cả các gói cần thiết.


Vì vậy, cách duy nhất để tìm ra tất cả các yêu cầu là freezecác gói đã cài đặt trong một thiết lập đang hoạt động và sau đó thêm mọi thứ trong đó vào requirements.txttệp?
Gabriel

2
@Gabriel: hiện tại có vì nhiều gói Python được cài đặt bằng cách chạy một setup.pytệp chứa các phụ thuộc mà chúng cần. Điều này sẽ trở nên tốt hơn khi gói Python trở thành tệp bánh xe ( pythonwheels.com ) cho phép bạn thu thập danh sách tất cả các gói cần thiết mà không cần thực thi mã tùy ý trong setup.pytệp.
Simeon Visser

1
Cảm ơn đã giải thích Simeon. Một điều nữa nếu bạn không phiền: tại sao điều này không xảy ra trong Ubuntu 14.04 nhưng nó lại xảy ra trong Ubuntu 12.04?
Gabriel

4
@Gabriel: Tôi không chắc chắn - theo kinh nghiệm của tôi pipluôn hủy bỏ khi không thể tìm thấy gói để cài đặt. Điều đó đang được nói piplà đang tích cực được phát triển để có thể bạn có một phiên bản mà tôi chưa từng làm việc cùng.
Simeon Visser

@SimeonVisser, "[bánh xe] cho phép bạn thu thập danh sách tất cả các gói cần thiết mà không cần thực thi mã tùy ý", thú vị, chia sẻ tâm trí làm thế nào để thực sự làm điều đó (bây giờ)?
sschuberth

39

Tôi đã cài đặt python3 nhưng python của tôi trong / usr / bin / python vẫn là phiên bản 2.7 cũ

Điều này làm việc ( <pkg>pyserialtrong trường hợp của tôi):

python3 -m pip install <pkg>

1
điều này xảy ra khi trong setuptools có python_requires='>=3.0'yêu cầu
Juan-Kabbali

11

Sau 2 giờ tìm kiếm, tôi đã tìm ra cách khắc phục chỉ bằng một dòng lệnh. Bạn cần biết phiên bản của gói (Chỉ cần tìm kiếm phiên bản GÓI).

Chỉ huy:

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

9

Lệnh dưới đây làm việc cho tôi -

python -m pip install flask

4

Hãy thử cài đặt bình qua powershell bằng lệnh sau.

pip install --isolated Flask

Điều này sẽ cho phép cài đặt để tránh các biến môi trường và cấu hình người dùng.


3

Không phải luôn luôn, nhưng trong một số trường hợp gói đã tồn tại. Ví dụ: vượt qua. Nó không được liệt kê bởi "danh sách pip" nhưng nó có thể được nhập và sử dụng:

nhập mô tả hình ảnh ở đây

Nếu tôi cố gắng cài đặt pip getpass, tôi gặp lỗi sau: "Không thể tìm thấy phiên bản thỏa mãn yêu cầu"


1

Tôi đã gặp lỗi này khi cài đặt awsclitrên Windows 10 trong anaconda (python 3.7). Trong khi khắc phục sự cố, tôi đã đi đến câu trả lời https://stackoverflow.com/a/49991357/6862405 và sau đó đến https://stackoverflow.com/a/54582701/6862405 . Cuối cùng thấy rằng tôi cần phải cài đặt các thư viện PyOpenSSL, cryptography, enum34, idnaipaddress. Sau khi cài đặt chúng (sử dụng pip installlệnh đơn giản ), tôi đã có thể cài đặt awscli.


1

Nếu bạn phải đối mặt với vấn đề này tại nơi làm việc. Đây có thể là giải pháp cho bạn.

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


-5

Sử dụng Dấu nhắc Lệnh, rồi chọn Chạy với tư cách quản trị viên.

Nâng cấp phiên bản pip

Để nâng cấp PIP, nhập lệnh này, rồi nhấn Enter: -

python.exe -m pip cài đặt - nâng cấp pip

Quay lại đường dẫn python C: \ Users \ Jack \ AppData \ Local \ Programs \ Python \ Python37 \ Sc scripts

Gõ jupyter

Bạn sẽ được chuyển hướng đến http: // localhost: 8888 / không xác định / cây - Trang chủ Jupyter

Hy vọng nó giúp !!!!!!!!!!!


2
Jupyter phải làm gì với điều này ??
Bzazz

Làm thế nào có thể nâng cấp pip giải quyết các phụ thuộc? Nó đòi hỏi sự phụ thuộc trong thư mục gọi.
Rizwan Javid

-7

có thể giúp

sudo pip cài đặt bánh xe == 0.29.0


4
Xin lỗi .. Tôi không đọc tiếng Trung Quốc hoặc ngôn ngữ châu Á khác .. Liên kết giới thiệu có thể bị hỏng trong tương lai ... vui lòng gửi các yếu tố cần thiết ở đây. Như đã đăng câu trả lời chất lượng thấp mà không có ngữ cảnh.
ZF007

1
Liên kết giới thiệu bằng tiếng Nhật ... vui lòng xem xét chia sẻ liên kết bằng tiếng Anh
javidazac

6
Mã này có thể hiểu được đối với tất cả các nhà phát triển và số lượng tiếng Nhật là tối thiểu và ít hơn những tiêu đề giới thiệu mã sau đây (dịch nó nếu nó quá khó đối với bạn nhưng bạn thực sự không cần phải làm điều đó để hiểu những gì đang diễn ra). Không nên có vấn đề với các ngôn ngữ khác ngoài tiếng Anh được sử dụng miễn là các ví dụ mã rõ ràng và không hoàn toàn phụ thuộc vào ngôn ngữ nước ngoài đang được sử dụng.
rg88

6
@ rg88 Điều đó sẽ tốt cho một nhận xét (có thể có một cảnh báo) nhưng một câu trả lời trên Stack Overflow nên được khép kín và thuyết phục.
tripleee
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.