Cách cài đặt đề xuất gói python trên Arch


37

Cách cài đặt gói python trên Arch là gì? Tìm kiếm chúng trên AUR và cài đặt chúng từ đó (hoặc tạo PKGBUILDtệp để tự tạo gói) hoặc sử dụng pip?

Tôi đã bắt đầu bằng cách cài đặt công cụ từ pacman và AUR và không biết liệu có nên kết hợp với pipcác gói không.

Câu trả lời:


34

Nếu bạn không cần các gói python cho tất cả người dùng thì bạn có thể cài đặt chúng trong nhà của bạn như thế này:

pip install --user packagename

Cài đặt trong nhà của bạn sẽ không xung đột với người quản lý gói.

Theo mặc định pip install --usersẽ cài đặt trong thư mục "trang web người dùng" của bạn. Thông thường đó là một cái gì đó như : /home/lesmana/.local/lib/python3.6/site-packages.

Lệnh sau sẽ in, trong số những người khác, vị trí "trang web người dùng" của bạn:

python -m site

Để tùy chỉnh vị trí cài đặt:

PYTHONUSERBASE=$HOME/some/dir pip install --user packagename

cái này sẽ cài đặt mọi thứ bên dưới $HOME/some/dir

chạy:

PYTHONUSERBASE=$HOME/some/dir $HOME/some/dir/bin/progname

Xem hướng dẫn sử dụng pip để biết thêm thông tin.


Nếu bạn muốn gói python cho tất cả người dùng thì nơi tốt nhất để cài đặt nó là /opt. ví dụ như thế này:

PYTHONUSERBASE=/opt/packagedir pip install packagename

(lưu ý thiếu --user)

và để chạy, như trên:

PYTHONUSERBASE=/opt/packagedir /opt/packagedir/bin/progname

Giải thích nền: /optthường được thừa nhận bởi các bản phân phối gnu / linux là thư mục nơi người dùng cục bộ hoặc quản trị viên hệ thống có thể cài đặt nội dung của riêng mình. nói cách khác: trình quản lý gói phân phối thường không chạm vào /opt. điều này ít nhiều được tiêu chuẩn hóa trong Tiêu chuẩn phân cấp hệ thống tập tin

Để tạo sự thoải mái cho người dùng, bạn vẫn sẽ muốn viết một tập lệnh bao bọc và đặt nó vào /binhoặc /usr/bin. Điều này vẫn có nguy cơ va chạm với trình quản lý gói phân phối nhưng ít nhất nó chỉ là một tệp script bao bọc. Vì vậy, thiệt hại có thể được thực hiện là tối thiểu. Bạn có thể đặt tên cho tập lệnh bao bọc giống như local-foohoặc custom-foođể giảm thiểu rủi ro va chạm với trình quản lý gói phân phối.

Ngoài ra, bạn có thể sửa đổi PATHđể bao gồm /opt/binvà đặt tập lệnh trình bao bọc của bạn ở đó. Nhưng điều này một lần nữa yêu cầu bạn sửa đổi một (hoặc một số) tệp hệ thống PATHđược xác định một lần nữa có thể bị ghi đè bởi trình quản lý gói phân phối.

Tóm lại: nếu bạn muốn cài đặt cho tất cả người dùng thì hãy thực hiện /opt. Nơi bạn đặt tập lệnh bao bọc cho thoải mái là một cuộc gọi phán xét.

Thông tin thêm về /optvà Tiêu chuẩn phân cấp hệ thống tập tin:


IMHO, điều này, cùng với một con trỏ để thiết lập virtualenvs, nên là câu trả lời được chấp nhận.
ttsiodras

1
Ừ Mới hơn pythonvà muốn tôi biết điều này trước sudionhững thứ pip-ping. Cảm ơn vì điều đó.
Hendy

Điều gì nếu bạn làm cần các gói python cho tất cả người dùng?
Mehrdad

@Mehrdad cập nhật câu trả lời
lesmana

@lesmana: Cảm ơn! Nhưng bạn có chắc chắn đó là cách được khuyến nghị để làm điều đó? Đây là lần đầu tiên tôi nghe thấy bất cứ ai đề nghị sử dụng / opt cho Python ...
Mehrdad

9

Thông thường, trong một bản phân phối, bạn nên sử dụng trình quản lý gói của bản phân phối. Tất nhiên bạn có thể cài đặt mọi thứ bằng cách sử dụng pip (hoặc, trong thế giới perl, cpan), hoặc tự biên dịch và cài đặt mọi thứ. Tuy nhiên, khi bạn làm điều này, người quản lý gói của nhà phân phối không biết về họ và không thể quản lý các phụ thuộc hoặc cập nhật cho họ.

Sử dụng pip tương đối nhiều với việc biên dịch và cài đặt gói của riêng bạn. Làm điều đó nếu bạn cần, nhưng thích trình quản lý gói của phân phối.


2
Bạn tuyệt đối nên tránh sử dụng pip(ít nhất là trên toàn cầu thông qua sudohoặc là root) - Tôi vừa gặp phải một số site-package/...lỗi đã tồn tại khi pacmancố gắng cài đặt một số phụ thuộc
Tobias Kienzler

Tôi cũng có lỗi như vậy. Tôi đã nâng cấp tất cả các gói pip3 và sau đó pacman từ chối thực hiện nâng cấp hệ thống do xung đột. Tôi đã phải gỡ cài đặt gói đó qua cả pip3 và pacman, sau đó tiến hành nâng cấp hệ thống và cuối cùng là cài đặt lại gói (tất nhiên là sử dụng pacman).
Al.G.

8

Cách đúng đắn cho ArchLinux

Cách đúng để cài đặt các gói PYTHON trong ArchLinux là sử dụng PACMAN! Để cài đặt các gói lên Python3, bạn phải sử dụng

sudo pacman -S python-'package'

Nếu bạn muốn cài đặt các gói từ Python2, bạn phải sử dụng

sudo pacman -S python2-'package'

Hầu hết các gói python đều nằm trong kho ArchLinux và các gói không có trong AUR (Kho lưu trữ người dùng ArchLinux) - đối với các gói này, bạn phải tải xuống tệp PKGBUILD và biên dịch. Sau đó, bạn phải sử dụng PACMAN để hoàn tất cài đặt

makepkg -s
sudo pacman -U 'compiled-package'

Cách đúng thứ hai cho ArchLinux

Khi gói không có trong AUR hoặc PKGBUILD không hoạt động, bạn có thể sử dụng PIP để cài đặt nó vào Python3

sudo pip install 'python-package'

hoặc Python2

sudo pip2 install 'python-package'

Bạn có thể cho một cơ hội virtualenvhoặc thậm chíconda

Trên Arch, bạn cũng có thể sử dụng VirtualEnvirments. Điều này có thể mang lại tính di động cho mã của bạn và duy trì các gói cũ. Cài đặt nó với

sudo pacman -S python-virtualenv

và thử cái này

virtualenv -p /usr/bin/python3 yourenv
source yourenv/bin/activate
pip install package-name

Khi bạn tạo môi trường này yourenv, bạn sẽ thiết lập pipđể chỉ cài đặt các gói vào môi trường này, không phải cho toàn bộ hệ thống.

Các liên kết khác này có thể hữu ích với bạn muốn tìm hiểu thêm về cách quản lý các gói trên Linux với condahoặc virtualenv:

Cài đặt gói Python từ Notebook Jupyter

Mã Python trên ArchLinux

Nếu bạn tuân theo các quy tắc này, ArchLinux của bạn sẽ không bị hỏng và sẽ không gặp vấn đề phụ thuộc giữa PACMAN và PIP.

Hy vọng nó hữu ích!



1

Ngoài các câu trả lời khác ở đây, hãy kiểm tra python-virtualenvgói. Nó có thể rất hữu ích nếu bạn đang thực hiện phát triển trên một số dự án với các phụ thuộc khác nhau với số phiên bản không khớp.

https://wiki.archlinux.org/index.php/Python_VirtualEnv

Cũng cần lưu ý rằng có hai biến thể của pip và virtualenv. Một cho Python 2 và một cho Python 3. Nếu cài đặt không thành công với lỗi cú pháp, bạn có thể đang thử với phiên bản sai.

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.