Làm thế nào để cài đặt các mô-đun python mà không cần truy cập root?


220

Tôi đang tham gia một số lớp học đại học và đã được cấp 'tài khoản hướng dẫn', đây là tài khoản của trường tôi có thể tham gia để làm việc. Tôi muốn chạy mã Numpy, matplotlib, mã scipy chuyên sâu trên máy đó, nhưng tôi không thể cài đặt các mô-đun này vì tôi không phải là quản trị viên hệ thống.

Làm thế nào tôi có thể thực hiện cài đặt?


14
Bạn có thể chuyển --user hoặc --prefix sang setup.py cho gói bạn đang cài đặt để cài đặt cục bộ. Xem cài đặt cảnh báo cho các mô-đun Python
arunkumar

Câu trả lời:


306

Trong hầu hết các tình huống, giải pháp tốt nhất là dựa vào vị trí được gọi là "trang web người dùng" (xem PEP để biết chi tiết) bằng cách chạy:

pip install --user package_name

Dưới đây là một cách "thủ công" hơn từ câu trả lời ban đầu của tôi, bạn không cần phải đọc nó nếu giải pháp trên phù hợp với bạn.


Với easy_install bạn có thể làm:

easy_install --prefix=$HOME/local package_name

cái nào sẽ cài đặt vào

$HOME/local/lib/pythonX.Y/site-packages

(thư mục 'cục bộ' là tên điển hình mà nhiều người sử dụng, nhưng tất nhiên bạn có thể chỉ định bất kỳ thư mục nào bạn có quyền ghi vào).

Bạn sẽ cần phải tự tạo

$HOME/local/lib/pythonX.Y/site-packages

và thêm nó vào PYTHONPATHbiến môi trường của bạn (nếu không easy_install sẽ phàn nàn - btw chạy lệnh trên một lần để tìm giá trị chính xác cho XY).

Nếu bạn không sử dụng easy_install, hãy tìm tùy chọn tiền tố, hầu hết các tập lệnh cài đặt cho phép bạn chỉ định một.

Với pip bạn có thể sử dụng:

pip install --install-option="--prefix=$HOME/local" package_name

1
Nếu trăn không có pipeasy_installcó sẵn thì sao?
Girardi

Quá trình cài đặt diễn ra tốt đẹp (phương thức pip), nhưng việc nhập gói_name không hoạt động. Tôi có cần thay đổi / thêm một số cấu hình không? còn cài đặt được sao chép vào (thư mục khôn ngoan)?
idoda

2
//, @AnotherDayAnotherRob, nghe có vẻ là một câu hỏi hay .
Nathan Basan

2
Có thể có ý nghĩa để cập nhật câu trả lời và đặt --userhướng dẫn lên hàng đầu. :)
VasiliNovikov

1
@Girardi Trong trường hợp bạn đã cài đặt python từ src vào thư mục cục bộ / my_python /, trước tiên, sẽ rất hữu ích khi cài đặt pip ở vị trí này với: wget --no-check-chứng chỉ bootstrap.pypa.io/get-pip.py -O - ​​| / my_python / bin / python - sau đó bạn có thể cài đặt các mô-đun khác với tiền tố pip +
teng_wenxuan

51

Không có quyền truy cập cũng không cài đặt easy_install?

Sau đó, bạn có thể tạo một con trăn virtualenv( https://pypi.python.org/pypi/virtualenv ) và cài đặt gói từ môi trường ảo này.

Thực hiện 4 lệnh trong trình bao sẽ là đủ (chèn bản phát hành hiện tại như 16.1.0 cho XXX):

$ curl --location --output virtualenv-X.X.X.tar.gz https://github.com/pypa/virtualenv/tarball/X.X.X
$ tar xvfz virtualenv-X.X.X.tar.gz
$ python pypa-virtualenv-YYYYYY/src/virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install package_name

Nguồn và thông tin thêm: https://virtualenv.pypa.io/en/latest/installation/


1
Câu trả lời này hữu ích cho tôi trên một hệ thống không pipđược cài đặt.
Dan Stowell

Tôi đã thử một biến thể để cài đặt python địa phương của tôi. curl --silent --show-error --retry 5 bootstrap.pypa.io/get-pip.py | ~ / Python-2.7.8 / trăn
Neerav

3
Nguồn dường như đã di chuyển và ở trên không hoạt động ra khỏi hộp. Các hướng dẫn tương tự trong https://virtualenv.pypa.io/en/latest/installation/công việc tốt mặc dù :)
Andras Deak

13

Bạn có thể chạy easy_install để cài đặt các gói python trong thư mục chính của bạn ngay cả khi không có quyền truy cập root. Có một cách tiêu chuẩn để thực hiện việc này bằng cách sử dụng trang web.USER_BASE, mặc định là $ HOME / .local hoặc $ HOME / Library / Python / 2.7 / bin và được bao gồm theo mặc định trên PYTHONPATH

Để làm điều này, hãy tạo một .pydistutils.cfg trong thư mục chính của bạn:

cat > $HOME/.pydistutils.cfg <<EOF
[install]
user=1
EOF

Bây giờ bạn có thể chạy easy_install mà không cần quyền root:

easy_install boto

Ngoài ra, điều này cũng cho phép bạn chạy pip mà không cần truy cập root:

pip install boto

Điều này làm việc cho tôi.

Nguồn từ blog của Wesley Tanaka: http://wtanaka.com/node/8095


1
Điều này làm việc cho tôi để cài đặt mà không cần truy cập root trên máy chủ linux. Cảm ơn bạn Nhưng tôi không biết tại sao nó lại hoạt động. Bất kỳ cơ thể có thể cho một gợi ý?
ChathuraG

9

Nếu bạn phải sử dụng setup.pytập lệnh distutils , có một số tùy chọn dòng lệnh để buộc đích cài đặt. Xem http://docs.python.org/install/index.html#alternate-installation . Nếu sự cố này lặp lại, bạn có thể thiết lập tệp cấu hình distutils, xem http://docs.python.org/install/index.html#inst-config-files .

Đặt biến PYTHONPATH được mô tả trong bài tihos.


1
Cảm ơn rất nhiều. Tôi đã cài đặt thành công lxmlthư viện bằng cách sử dụngpython <lxml_distrib_dir>/setup.py install --home=<dir>
Serge S.

6

Câu hỏi quan trọng. Máy chủ tôi sử dụng (Ubuntu 12.04) đã có easy_install3nhưng không có pip3. Đây là cách tôi cài đặt Pip và sau đó các gói khác vào thư mục nhà của tôi

  1. Yêu cầu quản trị viên cài đặt gói Ubuntu python3-setuptools

  2. Đã cài đặt pip

Như thế này:

 easy_install3 --prefix=$HOME/.local pip
 mkdir -p $HOME/.local/lib/python3.2/site-packages
 easy_install3 --prefix=$HOME/.local pip
  1. Thêm Pip (và các ứng dụng Python khác vào đường dẫn)

Như thế này:

PATH="$HOME/.local/bin:$PATH"
echo PATH="$HOME/.local/bin:$PATH" > $HOME/.profile
  1. Cài đặt gói Python

như thế này

pip3 install --user httpie

# test httpie package
http httpbin.org

4

Tôi sử dụng JuJu , về cơ bản cho phép có một bản phân phối linux thực sự nhỏ (chỉ chứa trình quản lý gói) trong thư mục $ HOME / .juju của bạn.

Nó cho phép hệ thống tùy chỉnh của bạn bên trong thư mục chính có thể truy cập thông qua proot và do đó, bạn có thể cài đặt bất kỳ gói nào mà không có quyền root. Nó sẽ chạy đúng với tất cả các bản phân phối linux chính, hạn chế duy nhất là JuJu có thể chạy trên kernel linux với phiên bản giới thiệu tối thiểu 2.6.32.

Chẳng hạn, sau khi cài đặt JuJu để cài đặt pip, chỉ cần gõ như sau:

$>juju -f
(juju)$> pacman -S python-pip
(juju)> pip


1

Cài đặt virtualenv cục bộ ( nguồn hướng dẫn ):

Quan trọng: Chèn bản phát hành hiện tại (như 16.1.0 ) cho XXX .
Kiểm tra tên của tệp được giải nén và chèn nó cho YYYYY .

$ curl -L -o virtualenv.tar.gz https://github.com/pypa/virtualenv/tarball/X.X.X
$ tar xfz virtualenv.tar.gz
$ python pypa-virtualenv-YYYYY/src/virtualenv.py env

Trước khi bạn có thể sử dụng hoặc cài đặt bất kỳ gói nào bạn cần cho sourcemôi trường Python ảo của mình env:

$ source env/bin/activate

Để cài đặt các gói python mới (như numpy), sử dụng:

(env)$ pip install <package>

Đây về cơ bản là một phiên bản cập nhật của hướng dẫn cực mạnh . Hướng dẫn của ông đã lỗi thời. Chỉnh sửa của tôi đã bị từ chối. Do đó tôi đã đăng nó như một hướng dẫn mới.
Niklas
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.