Làm cách nào để cài đặt thủ công mô-đun pypi mà không cần pip / easy_install?


91

Tôi muốn sử dụng mô-đun gntp để hiển thị thông báo giống như máy nướng bánh mì cho phần mềm C / C ++. Tôi muốn đóng gói tất cả các phụ thuộc để phần mềm có thể tự thực thi trên một máy tính khác.

Mô-đun gntp chỉ khả dụng thông qua trình cài đặt pip, không thể sử dụng được (Máy tính đang chạy phần mềm không có bất kỳ kết nối internet nào): làm cách nào để cài đặt nó từ các nguồn?

Tôi không muốn buộc người dùng cài đặt easy_install / pip và thêm đường dẫn pip vào% PATH theo cách thủ công.

Tái bút: Tôi đang sử dụng Python 2.7 trên máy Windows.


4
Có lẽ với python setup.py install?
Nicolas

Câu trả lời:


149
  1. Tải xuống gói
  2. giải nén nó nếu nó được nén
  3. cd vào thư mục chứa setup.py
  4. Nếu có bất kỳ hướng dẫn cài đặt nào có trong tài liệu kèm theo ở đây, hãy đọc và làm theo các hướng dẫn KHÁC
  5. gõ vào python setup.py install

Bạn có thể cần các đặc quyền của quản trị viên cho bước 5. Do đó, những gì bạn làm ở đây phụ thuộc vào hệ điều hành của bạn. Ví dụ trong Ubuntu, bạn sẽ nóisudo python setup.py install

CHỈNH SỬA - cảm ơn kwatford (xem bình luận đầu tiên)

Để bỏ qua nhu cầu về đặc quyền của quản trị viên trong bước 5 ở trên, bạn có thể sử dụng cờ --user. Bằng cách này, bạn chỉ có thể cài đặt gói cho người dùng hiện tại.

Các tài liệu nói:

Các tệp sẽ được cài đặt vào các thư mục con của site.USER_BASE (được viết dưới dạng cơ sở người dùng sau đây). Lược đồ này cài đặt các mô-đun Python thuần túy và các mô-đun mở rộng ở cùng một vị trí (còn được gọi là site.USER_SITE). Dưới đây là các giá trị cho UNIX, bao gồm cả Mac OS X:

Bạn có thể tìm thêm chi tiết tại đây: http://docs.python.org/2.7/install/index.html


8
pip / easy_install / setup.py thường chấp nhận một --usercờ để cài đặt gói chỉ cho người dùng hiện tại, thường bỏ qua yêu cầu truy cập quản trị viên.
kwatford

3
Vì một số lý do tôi thấy điều này: ImportError: No module named 'setuptools'Tôi thấy rằng ở đây: pypi.python.org/pypi/setuptools/1.1.6 Mặc dù quá trình cài đặt đã cho tôi lỗi ngoại lệ, nhưng bây giờ mô-đun websocket hoàn toàn không hoạt động, tôi nghĩ rằng tôi sẽ lên Python 3.3 trên Windows tại thời điểm này.
SSH này

2
@SSHThis: Tôi có cùng kết quả với một gói có cài đặt mà tôi đang cố gắng hoạt động. Việc tăng độ chi tiết lên cho "Vì bản phân phối này đã được cài đặt --multi-version [...]" vừa sai (chỉ có một phiên bản python được cài đặt tại đây) vừa không hữu ích (sử dụng tài liệu "python -m easy_install [...] "không giúp được gì cả), tôi đi cùng bạn - Python không sử dụng được.
Eric Towers

1
Tôi đoán pip install target-packagethường tự động cài đặt / cập nhật các gói khác mà gói mục tiêu phụ thuộc vào. Điều này có xảy ra trong trường hợp tiếp cận setup.py không? Hay zip của gói cũng chứa tất cả các phụ thuộc? Và bạn có nghĩa là chúng ta nên tải xuống bánh xe python thay vì khóa kéo? Thích những thứ này cho numpy? Nếu không phải tìm khóa kéo ở đâu (ví dụ: numpy)? (Am hỏi tất cả điều này vì tôi buộc phải làm việc đằng sau proxy công ty nơi tôi phải đấu tranh cho mỗi lần download: '()
Mahesha999

3
bạn không thể thực sự tải xuống các gói khi ngoại tuyến ... Nếu bạn muốn tải xuống chúng khi ở bên ngoài mạng công việc ngớ ngẩn của mình thì tôi có thể làm như sau: 1. tạo một virtualenv. 2. python setup.py installhoặc pip installtất cả những thứ bạn cần. 3. chạy đóng băng pip để lấy danh sách tất cả các gói và tất cả các phiên bản. Bạn có thể lưu trữ tệp này trong một tệp (theo truyền thống được gọi là request.txt '. Sau đó, nếu bạn muốn tải xuống các gói để bạn có thể sao chép chúng sang các máy khác nhau mà bạn có thể sử dụng pip download [options] -r <requirements file>. Đây không phải là cách hiệu quả nhất nhưng dễ dàng
Sheena

5

Để giải thích thêm câu trả lời của Sheena , tôi cần cài đặt các công cụ thiết lập như một phần phụ thuộc của một công cụ khác, ví dụ như more-itertools .

Tải xuống

Nhấp vào Clone or downloadnút và chọn phương pháp của bạn. Tôi đã đặt chúng vào một dev/py/libsthư mục trong thư mục chính người dùng của tôi. Không quan trọng chúng được lưu ở đâu, vì chúng sẽ không được cài đặt ở đó.

Cài đặt công cụ thiết lập

Bạn sẽ cần chạy phần sau bên trong thư mục công cụ thiết lập .

python bootstrap.py
python setup.py install

Cài đặt phụ thuộc chung

Bây giờ bạn có thể điều hướng đến chỉ thị more-itertools và cài đặt nó như bình thường.

  1. Tải xuống gói
  2. Giải nén nó nếu nó là một kho lưu trữ
  3. Điều hướng ( cd ...) vào thư mục chứasetup.py
  4. Nếu có bất kỳ hướng dẫn cài đặt nào trong tài liệu có ở đây, hãy đọc và làm theo các hướng dẫn KHÁC
  5. Gõ vào: python setup.py install

2

Mặc dù câu trả lời của Sheena có tác dụng pipnhưng không chỉ dừng lại ở đó.

Từ câu trả lời của Sheena:

  1. Tải xuống gói
  2. giải nén nó nếu nó được nén
  3. cd vào thư mục chứa setup.py
  4. Nếu có bất kỳ hướng dẫn cài đặt nào trong tài liệu có ở đây, hãy đọc và làm theo các hướng dẫn KHÁC
  5. gõ vào python setup.py install

Khi kết thúc việc này, bạn sẽ có một .eggtệp trong site-packages. Là một người dùng, điều này sẽ không làm phiền bạn. Bạn có thể importuninstallgói bình thường. Tuy nhiên, nếu muốn thực hiện piptheo cách trên, bạn có thể tiếp tục các bước sau.

Trong site-packagesthư mục,

  1. unzip <.egg file>
  2. đổi tên EGG-INFOthư mục thành<pkg>-<version>.dist-info
  3. Bây giờ bạn sẽ thấy một thư mục riêng biệt với tên gói, <pkg-directory>
  4. find <pkg-directory> > <pkg>-<version>.dist-info/RECORD
  5. find <pkg>-<version>.dist-info >> <pkg>-<version>.dist-info/RECORD. Là >>để ngăn ghi đè.

Bây giờ, nhìn vào site-packagesthư mục, bạn sẽ không bao giờ nhận ra mình đã cài đặt mà không có pip. Để uninstall, chỉ cần làm như bình thường pip uninstall <pkg>.


Điều gì sẽ xảy ra nếu tôi đang cài đặt một gói từ kho lưu trữ Anaconda và nó không có setup.pytệp?
Nhầm lẫn
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.