Cara yang disarankan untuk menginstal paket python di Arch

37

Apa cara yang disarankan untuk menginstal paket python di Arch? Mencari mereka di AUR dan menginstalnya dari sana (atau membuat PKGBUILDfile untuk membuat paket sendiri) atau menggunakan pip?

Saya mulai dengan menginstal barang-barang dari pacman dan AUR dan tidak tahu apakah akan bijaksana untuk bergaul dengan pippaket.

Nils Werner
sumber

Jawaban:

34

Jika Anda tidak memerlukan paket python untuk semua pengguna maka Anda dapat menginstalnya di rumah Anda seperti ini:

pip install --user packagename

Menginstal di rumah Anda tidak akan bertentangan dengan pengelola paket.

Secara default pip install --userakan menginstal di direktori "situs pengguna" Anda. Biasanya itu adalah sesuatu seperti: /home/lesmana/.local/lib/python3.6/site-packages.

Perintah berikut akan mencetak, antara lain, lokasi "situs pengguna" Anda:

python -m site

Untuk menyesuaikan lokasi pemasangan:

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

ini akan menginstal semuanya di bawah $HOME/some/dir

untuk berlari:

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

Lihat manual pip untuk informasi lebih lanjut.


jika Anda menginginkan paket python untuk semua pengguna maka tempat terbaik untuk menginstalnya adalah /opt. misalnya seperti ini:

PYTHONUSERBASE=/opt/packagedir pip install packagename

(perhatikan yang hilang --user)

dan untuk menjalankan, seperti di atas:

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

Penjelasan latar belakang: /optsecara umum diakui oleh distribusi gnu / linux sebagai direktori di mana pengguna lokal atau administrator sistem dapat menginstal barang-barangnya sendiri. dengan kata lain: manajer paket distribusi biasanya tidak menyentuh /opt. ini kurang lebih terstandarisasi dalam Standar Hierarki Filesystem

Untuk kenyamanan bagi pengguna, Anda masih ingin menulis skrip pembungkus dan meletakkannya di /binatau /usr/bin. Ini masih berisiko bertabrakan dengan manajer paket distribusi tetapi setidaknya itu hanya satu file skrip wrapper. Jadi kerusakan yang mungkin dilakukan sangat minim. Anda dapat memberi nama skrip pembungkus seperti local-fooatau custom-foountuk meminimalkan risiko tabrakan dengan manajer paket distribusi.

Atau Anda dapat memodifikasi PATHuntuk memasukkan /opt/bindan menempatkan skrip pembungkus Anda di sana. Tetapi ini lagi mengharuskan Anda untuk memodifikasi (atau beberapa) file sistem di mana PATHditentukan yang lagi dapat ditimpa oleh manajer paket distribusi.

Singkatnya: jika Anda ingin menginstal untuk semua pengguna maka lakukan /opt. Tempat Anda meletakkan skrip pembungkus untuk kenyamanan adalah panggilan penilaian.

Informasi Lebih Lanjut tentang /optdan Standar Sistem Hierarki Filesystem:

lesmana
sumber
IMHO, ini, bersama-sama dengan pointer untuk mengatur virtualenvs, harus menjadi jawaban yang diterima.
ttsiodras
1
Ugh. Lebih baru pythondan berharap saya tahu ini sebelum sudiohal-hal pip-ping. Terima kasih untuk ini.
Hendy
Bagaimana jika Anda melakukan membutuhkan paket python untuk semua pengguna?
Mehrdad
@Mehrdad memperbarui jawaban
lesmana
@lesmana: Terima kasih! Tetapi apakah Anda yakin itu cara yang disarankan untuk melakukannya? Ini adalah pertama kalinya saya mendengar ada yang menyarankan menggunakan / memilih untuk Python ...
Mehrdad
9

Biasanya, dalam distribusi, disarankan agar Anda menggunakan manajer paket distribusi. Anda tentu saja dapat menginstal sesuatu menggunakan pip (atau, di perl dunia, cpan), atau kompilasi dan instal sendiri. Namun, ketika Anda melakukan ini, manajer paket distribusi tidak tahu tentang mereka dan tidak dapat mengelola dependensi atau pembaruan untuk mereka.

Menggunakan pip hampir sama dengan mengkompilasi dan menginstal paket Anda sendiri. Lakukan jika perlu, tetapi lebih suka manajer paket distribusi.

Falcon Momot
sumber
2
Anda harus benar-benar menghindari menggunakan pip(setidaknya secara global via sudoatau sebagai root) - Saya baru saja mendapatkan beberapa site-package/...kesalahan yang sudah ada ketika pacmanmencoba menginstal beberapa dependensi
Tobias Kienzler
Saya baru saja mendapatkan kesalahan seperti itu juga. Saya telah memutakhirkan semua paket pip3 dan kemudian pacman menolak untuk melakukan pembaruan sistem karena konflik. Saya harus menghapus paket itu baik melalui pip3 dan pacman, kemudian melakukan upgrade sistem, dan akhirnya menginstal kembali paket (menggunakan pacman, tentu saja).
Al.G.
8

Cara yang tepat untuk ArchLinux

Cara yang tepat untuk menginstal paket PYTHON di ArchLinux menggunakan PACMAN! Untuk menginstal paket ke Python3, Anda harus menggunakan

sudo pacman -S python-'package'

Jika Anda ingin menginstal paket dari Python2, Anda harus menggunakannya

sudo pacman -S python2-'package'

Sebagian besar paket python berada dalam repositori ArchLinux dan paket-paket yang tidak ada dalam AUR (ArchLinux User Repositories) - untuk paket-paket ini Anda harus mengunduh file dan kompilasi PKGBUILD. Setelah itu, Anda harus menggunakan PACMAN untuk menyelesaikan instalasi

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

Cara tepat kedua untuk ArchLinux

Ketika paket tidak di AUR atau PKGBUILD tidak berfungsi, Anda dapat menggunakan PIP untuk menginstalnya ke Python3

sudo pip install 'python-package'

atau Python2

sudo pip2 install 'python-package'

Anda bisa memberi kesempatan kepada virtualenvatau bahkanconda

Di Arch, Anda juga dapat menggunakan VirtualEnvironmentments. Ini dapat membawa portabilitas ke kode Anda dan memelihara paket lama juga. Instal dengan

sudo pacman -S python-virtualenv

dan coba ini

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

Ketika Anda membuat lingkungan ini yourenv, Anda akan mengatur pipuntuk menginstal paket hanya ke lingkungan ini, bukan ke seluruh sistem.

Tautan lain ini dapat berguna jika Anda ingin mempelajari lebih lanjut tentang mengelola paket di Linux dengan condaatau virtualenv:

Menginstal Paket Python dari Notebook Jupyter

Kode Python di ArchLinux

Jika Anda mengikuti aturan ini, ArchLinux Anda tidak akan rusak dan tidak akan memiliki masalah ketergantungan antara PACMAN dan PIP.

Semoga bermanfaat!

Emanuel Fontelles
sumber
5

Untuk paket-paket tertentu (yang kemungkinan besar saya tidak ingin retas), saya membuat paket sendiri menggunakan ini:

https://github.com/bluepeppers/pip2arch

kemudian bangun dan pasang PKGBUILD yang diproduksi.

Saya meninggalkan virtualenvs untuk paket yang mungkin ingin saya ubah atau retas.

rmorgans
sumber
Ada juga github.com/wenLiangcan/pip2pkgbuild
Tobias Kienzler
1

Selain jawaban lain di sini, lihat python-virtualenvpaket. Mungkin sangat berguna jika Anda melakukan pengembangan pada beberapa proyek dengan dependensi berbeda dengan nomor versi yang tidak cocok.

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

Hati-hati juga bahwa ada dua varian pip dan virtualenv. Satu untuk Python 2 dan satu untuk Python 3. Jika instalasi gagal dengan kesalahan sintaks, Anda mungkin mencoba dengan versi yang salah.

bobbaluba
sumber