2011-08-29 39 views
612

Dưới đây là vấn đềLàm thế nào để pip cài đặt gói theo requirements.txt từ một thư mục địa phương?

Tôi có một requirements.txt trông giống như:

BeautifulSoup==3.2.0 
Django==1.3 
Fabric==1.2.0 
Jinja2==2.5.5 
PyYAML==3.09 
Pygments==1.4 
SQLAlchemy==0.7.1 
South==0.7.3 
amqplib==0.6.1 
anyjson==0.3 
... 

Tôi có một thư mục lưu trữ cục bộ chứa tất cả các gói + người khác.

tôi đã tạo ra một virtualenv mới với

bin/virtualenv testing 

khi kích hoạt nó, tôi đã cố gắng để cài đặt các gói theo requirements.txt từ thư mục lưu trữ địa phương.

source bin/activate 
pip install -r /path/to/requirements.txt -f file:///path/to/archive/ 

Tôi có một số đầu ra mà dường như chỉ ra rằng quá trình cài đặt là tốt

Downloading/unpacking Fabric==1.2.0 (from -r ../testing/requirements.txt (line 3)) 
    Running setup.py egg_info for package Fabric 
    warning: no previously-included files matching '*' found under directory 'docs/_build' 
    warning: no files found matching 'fabfile.py' 
Downloading/unpacking South==0.7.3 (from -r ../testing/requirements.txt (line 8)) 
    Running setup.py egg_info for package South 
.... 

Nhưng kiểm tra sau đó cho thấy không ai trong số các gói phần mềm được cài đặt đúng cách. Tôi không thể nhập gói và không tìm thấy gói nào trong thư mục site-package của virtualenv của tôi. Vì vậy, những gì đã đi sai?

+3

Bạn đã thử sử dụng '--no-index' sao cho nó thậm chí không nhìn vào PyPI? –

+1

Bạn đã xóa thông báo lỗi. Nó thường ở gần đáy. – bukzor

+0

Bạn có thể sử dụng đường dẫn tệp thay vì tên gói, điều đó có nghĩa là bạn sẽ phải thay đổi tệp requirements.txt, nhưng vẫn giữ lệnh pip install giống nhau. – asafge

Trả lời

344

này làm việc cho tôi:

$ pip install -r requirements.txt --no-index --find-links file:///tmp/packages 

--no-index - Bỏ qua chỉ số gói (chỉ nhìn vào --find-links URL thay vì).

-f, --find-links <URL> - Nếu URL hoặc đường dẫn đến tệp html, sau đó phân tích cú pháp cho liên kết đến lưu trữ. Nếu đường dẫn cục bộ hoặc file:// URL là một thư mục, hãy tìm các lưu trữ trong danh sách thư mục.

+5

** Thông tin về '--no-index' từ lệnh pip giúp cài đặt **' --no-index' Bỏ qua chỉ mục gói (chỉ xem các URL '--find-link' thay thế). ** Thông tin về '--find-links' từ lệnh pip giúp cài đặt **' -f', '--find-links ' Nếu url hoặc đường dẫn đến tệp html, sau đó phân tích cú pháp cho liên kết tới lưu trữ. Nếu đường dẫn cục bộ hoặc tệp: // url là một thư mục, hãy tìm các lưu trữ trong danh sách thư mục. – AWrightIV

+0

//, Đây có thể là một giải pháp rất thanh lịch, đặc biệt là trong cuộc đấu tranh vĩnh cửu với nhà cung cấp: http://bitprophet.org/blog/2012/06/07/on-vendorizing/ –

+0

Cảm ơn nó hoạt động cho tôi –

908

Tôi đã đọc ở trên, nhận thấy đây là một câu hỏi cũ, nhưng nó hoàn toàn chưa được giải quyết và vẫn còn ở phía trên cùng của kết quả tìm kiếm google của tôi vì vậy đây là một câu trả lời mà làm việc cho tất cả mọi người:

pip install -r /path/to/requirements.txt 
+163

Tôi nhận thấy câu trả lời này không giải quyết được câu hỏi ban đầu, nhưng câu trả lời cho câu hỏi tôi gặp phải khi tôi tìm thấy câu hỏi này trên Google ... – Jonathan

+0

Câu hỏi ban đầu đã thay đổi - thông báo cách anh ấy sử dụng /path/to/requirements.txt ngay bây giờ . –

+7

@MikeLyons khá chắc chắn câu hỏi chưa thực sự thay đổi - không có lịch sử chỉnh sửa. –

95

Đối virtualenv để cài đặt tất cả các tệp trong tệp requirements.txt.

  1. cd đến thư mục mà requirements.txt nằm
  2. kích hoạt virtualenv bạn
  3. chạy: pip install -r requirements.txt trong shell của bạn
+2

"pyenv virtualenv pip install requirements.txt không hoạt động" vì lợi ích của Google ... – Jerad

11

Thông thường, bạn sẽ muốn có một nhanh chóng cài đặt từ kho lưu trữ địa phương, mà không thăm dò PyPI.

Trước tiên, tải tài liệu lưu trữ mà hoàn thành yêu cầu của bạn:

$ pip install --download <DIR> -r requirements.txt 

Sau đó, cài đặt sử dụng –find-links–no-index:

$ pip install --no-index --find-links=[file://]<DIR> -r requirements.txt 
+0

điều này thật tuyệt vời, hoạt động như một sự quyến rũ! Tnx –

43

Tôi đã có một vấn đề tương tự.Tôi cố gắng này:

pip install -U -r requirements.txt 

(-U = cập nhật nếu nó đã được cài đặt)

Nhưng vấn đề tiếp tục. Tôi nhận ra rằng một số thư viện chung cho phát triển đã bị bỏ qua.

sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk 

Tôi không biết điều này có giúp ích cho bạn hay không.

17
pip install -r requirements.txt 

Để biết thêm chi tiết, vui lòng kiểm tra tùy chọn trợ giúp.

pip install --help 

Chúng tôi có thể tìm thấy tùy chọn '-r'

-r, --requirement Cài đặt từ file yêu cầu đưa ra. Tùy chọn này có thể là được sử dụng nhiều lần.

Thông tin thêm về một số thường được sử dụng pips cài đặt tùy chọn: (Đây là tùy chọn giúp đỡ về pip cài đặt lệnh)

enter image description here

Ngoài ra ở trên là bộ hoàn chỉnh các tùy chọn. Vui lòng sử dụng pip install --help để có danh sách đầy đủ các tùy chọn.

9

Tôi làm việc với rất nhiều hệ thống đã được các nhà phát triển bỏ qua "các hướng dẫn sau đây họ tìm thấy trên internet". Điều cực kỳ phổ biến là pippython của bạn không nhìn vào cùng một đường dẫn/gói trang web. Vì lý do này, khi tôi gặp oddness tôi bắt đầu bằng cách làm này:

$ python -c 'import sys; print(sys.path)' 
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', 
'/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages'] 

$ pip --version 
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7) 

Đó là một hạnh phúc hệ thống.

Dưới đây là hệ thống không hài lòng. (Hoặc ít nhất đó là một hệ thống blissfully dốt nát gây ra những người khác được hạnh phúc.)

$ pip --version 
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6) 

$ python -c 'import sys; print(sys.path)' 
['', '/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7/site-packages'] 

$ which pip pip2 pip3 
/usr/local/bin/pip 
/usr/local/bin/pip3 

Đó là hài lòngpip là (python3.6 và) sử dụng /usr/local/lib/python3.6/site-packages khi python là (python2.7 và) sử dụng /usr/local/lib/python2.7/site-packages

Khi tôi muốn chắc chắn rằng tôi đang cài đặt yêu cầu cho đúng python, tôi làm điều này:

$ which -a python python2 python3 
/usr/local/bin/python 
/usr/bin/python 
/usr/local/bin/python2 
/usr/local/bin/python3 

$ /usr/bin/python -m pip install -r requirements.txt 

Bạn đã nghe, "Nếu nó không bị hỏng, đừng cố sửa nó." Phiên bản DevOps của đó là, "Nếu bạn không phá vỡ nó và bạn có thể làm việc xung quanh nó, không cố gắng sửa chữa nó."

2

INSTALL ENV ảo với PYTHON3:

tôi đã cùng một vấn đề. Không có giải pháp nào ở trên phù hợp với tôi. Tôi tìm ra giải pháp.

Ban đầu, tôi đã tạo env ảo của tôi theo cách này:

sudo apt-get install python3-pip 
sudo pip3 install virtualenv 
virtualenv myenv 

Nó đã không làm việc. Tôi đã có thể cài đặt requirements.txt nhưng không thể nhập các mô-đun. Vì vậy, tôi cố gắng,

virtualenv -p python3 myenv 

Activate môi trường sử dụng:

source myenv/bin/activate 

Bây giờ tôi đã cài đặt requirements.txt sử dụng:

pip3 install -r requirements.txt 

cài đặt đã thành công và tôi đã có thể nhập các module .

Các vấn đề liên quan