Trường hợp pip cài đặt gói của nó?


323

Tôi kích hoạt một virtualenv có cài đặt pip. tôi đã làm

pip3 install Django==1.8

và Django tải thành công. Bây giờ, tôi muốn mở thư mục Django. Thư mục nằm ở đâu? Thông thường nó sẽ nằm trong phần "tải xuống" nhưng tôi không chắc nó sẽ ở đâu nếu tôi cài đặt nó bằng pip trong virtualenv.


1
Thư mục cài đặt gói có thể bị ghi đè thông qua CLI args, biến môi trường hoặc tệp cấu hình không?
John Carrell

Câu trả lời:


108

Pip khi được sử dụng với virtualenv thường sẽ cài đặt các gói trong đường dẫn <virtualenv_name>/lib/<python_ver>/site-packages.

Ví dụ, tôi đã tạo một virtualenv thử nghiệm có tên venv_test với Python 2.7 và djangothư mục nằm trong venv_test/lib/python2.7/site-packages/django.


1
Đôi khi bạn có thể không biết tên / đường dẫn virtualenv, chẳng hạn như sử dụng với các tài nguyên sinh ra Jupyterhub / binderhub. Tôi tìm thấy cách số 1 ở đây để làm việc khi pip showkhông làm gì cả. Tóm lại, nó bao gồm nhập bảng điều khiển python thích hợp và gõ help("module_name"), nơi module_nameđược thay thế bằng tên mô-đun thực tế mà bạn quan tâm. Bạn có thể thấy các mô-đun được cài đặt help("modules")trong bảng điều khiển python.
Wayne

1
bạn đã xây dựng virtualenv theo cách nào? Tôi đang sử dụng conda để tạo môi trường ảo của mình trong khi pip3 không cài đặt gói trong thư mục bạn đã đề cập
cloudscomputes

Vào thời điểm đó (gần 4 năm trước), tôi đang sử dụng virtualenv và Python 2.x. Bây giờ, tôi đang sử dụng venv và Python 3.5.x. Tôi vẫn tìm thấy cấu trúc thư mục chung tương tự, mặc dù. Với Anaconda, đó là một bản phân phối được quản lý riêng biệt, do đó, nó có thể cấu trúc mọi thứ khác nhau, ít nhất là một phần.
khampson

583

Theo nhu cầu phổ biến, một tùy chọn được cung cấp qua câu trả lời được đăng:

pip show <package name>sẽ cung cấp vị trí cho Windows và macOS và tôi đoán bất kỳ hệ thống nào. :)

Ví dụ:

> pip show cvxopt
Name: cvxopt
Version: 1.2.0
...
Location: /usr/local/lib/python2.7/site-packages

15
Trên mac, nó hiển thị cho tôi một thư mục chứa mã nguồn awscli, nhưng không có nhị phân. : /
Cory Klein

8
Đúng, nhưng để hoàn toàn tuân thủ với câu hỏi được hỏi, nó phải làpip3 show <package name>
Jorge Torres

1
Tôi đang sử dụng python 3.6 trên windows và "pip" dùng để chỉ pip cho python 3. tôi không cần chỉ định "pip3".
FistOfFury

7
@CoryKlein Thay vì site-packages/, tôi tìm thấy nó trong~/Library/Python/3.7/bin/
Matt Fletcher

2
Hoạt động rất tốt cho Ubuntu 18.04
Mohammed Baashar

47

pip list -vcó thể được sử dụng để liệt kê các vị trí cài đặt của các gói, được giới thiệu trong https://pip.pypa.io/en/urdy/news/#b1-2018-03-31

Hiển thị vị trí cài đặt khi lệnh danh sách chạy với tùy chọn -vvv. (# 979)

>pip list -v
Package                  Version   Location                                                             Installer
------------------------ --------- -------------------------------------------------------------------- ---------
alabaster                0.7.12    c:\users\me\appdata\local\programs\python\python38\lib\site-packages pip
apipkg                   1.5       c:\users\me\appdata\local\programs\python\python38\lib\site-packages pip
argcomplete              1.10.3    c:\users\me\appdata\local\programs\python\python38\lib\site-packages pip
astroid                  2.3.3     c:\users\me\appdata\local\programs\python\python38\lib\site-packages pip
...

Cập nhật : Tính năng này được giới thiệu trong pip10.0.0b1. Trên Ubuntu 18.04, piphoặc pip3được cài đặt với sudo apt install python-piphoặc sudo apt install python3-piplà 9.0.1 không có tính năng này. Kiểm tra https://github.com/pypa/pip/issues/5599 để biết cách nâng cấp phù hợp piphoặc pip3.


4
Thật không may, điều này không hoạt động trên Ubuntu 18.04LTS
Sumanth Lazarus

3
Đối với tôi, nó không hiển thị vị trí cài đặt (trên Linux Mint 19.3)
Nicolai Weitkemper

Việc pipcài đặt sử dụng sudo apt install python-piphoặc sudo apt install python3-piplà 9.0.1. Kiểm tra github.com/pypa/pip/issues/5599 để biết cách nâng cấp phù hợp piphoặc pip3.
jiasli

11

Theo mặc định, trên Linux, Pip cài đặt các gói thành /usr/local/lib/python2.7/dist-packages.

Sử dụng virtualenv hoặc --user trong khi cài đặt sẽ thay đổi vị trí mặc định này. Nếu bạn sử dụng, pip showđảm bảo bạn đang sử dụng đúng người dùng hoặc người khác pipcó thể không thấy các gói bạn đang tham khảo.


7

Trong trình thông dịch hoặc tập lệnh Python, bạn có thể làm

import site
site.getsitepackages() # list of global package locations

site.getusersitepackages() #string for user-specific package location

đối với vị trí các gói bên thứ 3 (những gói không nằm trong bản phân phối Python cốt lõi) được cài đặt.

Trên Python cài đặt trên MacOS của tôi, các kết quả đầu ra trước đây

['/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages'],

mà chuẩn hóa cho cùng một đầu ra đường dẫn bằng pip show, như đã đề cập trong câu trả lời trước:

$ readlink -f /usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages
/usr/local/lib/python3.7/site-packages

Tham khảo: https://docs.python.org/3/l Library / site.html # site.getsitepackages

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.