Apa cara paling sederhana untuk melakukan instalasi paket python user-local?

32

Saya tidak ingin berurusan dengan virtualenv untuk instalasi Python lokal, saya hanya ingin menginstal beberapa paket secara lokal tanpa berurusan dengan PYTHONPATHvariabel lingkungan, bagaimana saya melakukannya?

Aron Ahmadia
sumber
Anda mengatakan "berurusan dengan" seolah-olah virtualenv merepotkan. Saya telah menemukan yang sebaliknya benar. (Mungkin Anda mau --system-site-packages?)
Andreas Klöckner
itu secara hipotesis diajukan :) virtualenv mengagumkan tetapi tidak cocok untuk setiap kasus penggunaan.
Aron Ahmadia

Jawaban:

48

Python (per 2.6 dan 3.0 ) sekarang mencari di direktori ~ / .local untuk instalasi lokal, yang tidak memerlukan hak administratif untuk menginstal, jadi Anda hanya perlu mengarahkan installer Anda ke direktori itu.

Jika Anda telah mengunduh paket foodan ingin menginstalnya secara manual, ketik:

cd path/to/foo
python setup.py install --user

Jika Anda menggunakan easy_install dan ingin paket diunduh dan diinstal:

easy_install --prefix=$HOME/.local/ foo

Pembaruan oleh RafiK

pip install --user foo

Jawaban berikut disediakan untuk tujuan historis: Ini sedikit lebih berfungsi jika Anda menggunakan pip untuk mengunduh dan menginstal:

pip install --install-option="--prefix=$HOME/.local" foo
Aron Ahmadia
sumber
3
perbarui: pip sekarang mendukung flag --user: pip install --user SomePackage (tautan ke manual) Dengan menggunakan ini, semuanya harus bekerja di luar kotak bahkan pada OS yang berbeda
RafiK
5

Meskipun saya suka Python sebagai bahasa, mendistribusikan paket Python berantakan. Saya selalu menemukan orang yang tidak terbiasa dengan Python berjuang dengan itu.

Di sebelah instalasi pengguna-lokal seperti yang diuraikan oleh Aron (menggunakan --user, atau --prefix), opsi lain adalah EasyBuild ( http://hpcugent.github.com/easybuild/ ). Tidak hanya untuk paket Python, tetapi untuk paket perangkat lunak (ilmiah) apa pun. Setelah EasyBuild memiliki dukungan untuk itu, membangun dan menginstal paket perangkat lunak pada dasarnya adalah satu perintah.

Untuk daftar paket perangkat lunak yang saat ini didukung, lihat https://github.com/hpcugent/easybuild/wiki/List-of-supported-software-packages .

Penafian: Saya adalah pengembang EasyBuild.

Kenneth Hoste
sumber
2

@Ron: Pastikan untuk menambahkan path paket-situs lokal ke variabel lingkungan $ PYTHONPATH

corion
sumber
Secara otomatis termasuk dalam jalur situs pada Python 2.6 dan Python 3.0 :)
Aron Ahmadia
@AronAhmadia tidak jika Anda menggunakan --prefixopsi.
Jens Timmerman
@JensTimmerman - jalur situs adalah tempat Python terlihat saat dimulai untuk mengimpor modul, kapan pun Anda menjalankan Python. Opsi awalan menentukan di mana menginstal paket yang diberikan ketika Anda menginstal paket Python. Dua gagasan yang sepenuhnya terpisah.
Aron Ahmadia
@AronAhmadia ya, maksud saya adalah bahwa ketika Anda menggunakan easy_install --prefix = / tmp Anda perlu menambahkan "/tmp/lib/pythonx.x/site-packages" ke variabel PYTHONPATH Anda atau tidak akan diambil oleh python.
Jens Timmerman
@AronAhmadia pastebin.com/6FCTetCc
Jens Timmerman