Bagaimana cara menginstal modul python tanpa akses root?

220

Saya mengambil beberapa kelas universitas dan telah diberi 'akun instruksional', yang merupakan akun sekolah yang saya dapat ssh untuk melakukan pekerjaan. Saya ingin menjalankan kode Numpy, matplotlib, scipy intensif komputer saya pada mesin itu, tetapi saya tidak dapat menginstal modul ini karena saya bukan administrator sistem.

Bagaimana saya bisa melakukan instalasi?

Rishi
sumber
14
Anda dapat meneruskan --user atau --prefix ke setup.py untuk paket yang Anda instal untuk menginstalnya secara lokal. Lihat pemasangan peringatan untuk modul Python
arunkumar

Jawaban:

306

Dalam sebagian besar situasi, solusi terbaik adalah mengandalkan lokasi yang disebut "situs pengguna" (lihat PEP untuk detailnya) dengan menjalankan:

pip install --user package_name

Di bawah ini adalah cara yang lebih "manual" dari jawaban asli saya, Anda tidak perlu membacanya jika solusi di atas cocok untuk Anda.


Dengan easy_install Anda dapat melakukannya:

easy_install --prefix=$HOME/local package_name

yang akan diinstal ke

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

(folder 'lokal' adalah nama khas yang digunakan banyak orang, tetapi tentu saja Anda dapat menentukan folder mana pun yang memiliki izin untuk menulis).

Anda harus membuat secara manual

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

dan menambahkannya ke PYTHONPATHvariabel lingkungan Anda (jika tidak easy_install akan mengeluh - btw jalankan perintah di atas satu kali untuk menemukan nilai yang benar untuk XY).

Jika Anda tidak menggunakan easy_install, cari opsi awalan, sebagian besar skrip instal memungkinkan Anda menentukannya.

Dengan pip Anda dapat menggunakan:

pip install --install-option="--prefix=$HOME/local" package_name
tiho
sumber
1
bagaimana jika python tidak memiliki pipdan easy_installtersedia?
Girardi
Instalasi berjalan dengan baik (metode pip), tetapi mengimpor package_name tidak berfungsi. Apakah saya perlu mengubah / menambah beberapa konfigurasi? juga di mana instalasi disalin ke (folder bijaksana)?
idoda
2
//, @AnotherDayAnotherRob, itu terdengar seperti pertanyaan yang bagus .
Nathan Basanese
2
Mungkin masuk akal untuk memperbarui jawaban dan menempatkan --userinstruksi di atas. :)
VasiliNovikov
1
@Girardi Jika Anda telah menginstal python dari src ke direktori lokal / my_python /, akan berguna untuk menginstal pip terlebih dahulu di lokasi ini dengan: wget --tidak ada-periksa-sertifikat bootstrap.pypa.io/get-pip.py -O - ​​| / my_python / bin / python - maka Anda dapat menginstal modul lain dengan pip + awalan
teng_wenxuan
51

Tidak ada izin untuk mengakses atau menginstal easy_install?

Kemudian, Anda dapat membuat python virtualenv( https://pypi.python.org/pypi/virtualenv ) dan menginstal paket dari lingkungan virtual ini.

Menjalankan 4 perintah di shell akan cukup (masukkan rilis saat ini seperti 16.1.0 untuk 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

Sumber dan info lebih lanjut: https://virtualenv.pypa.io/en/latest/installation/

luar biasa
sumber
1
Jawaban ini berguna bagi saya di sistem tanpa pipterinstal.
Dan Stowell
Saya mencoba varian untuk pemasangan python lokal saya. curl --silent --show-error --retry 5 bootstrap.pypa.io/get-pip.py | ~ / Python-2.7.8 / python
Neerav
3
Sumbernya tampaknya telah pindah dan yang di atas tidak berfungsi. Instruksi serupa di https://virtualenv.pypa.io/en/latest/installation/kantor baik-baik saja :)
Andras Deak
13

Anda dapat menjalankan easy_install untuk menginstal paket python di direktori home Anda bahkan tanpa akses root. Ada cara standar untuk melakukan ini menggunakan situs.USER_BASE yang default ke sesuatu seperti $ HOME / .local atau $ HOME / Library / Python / 2.7 / bin dan disertakan secara default pada PYTHONPATH

Untuk melakukan ini, buat .pydistutils.cfg di direktori home Anda:

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

Sekarang Anda dapat menjalankan easy_install tanpa hak akses root:

easy_install boto

Atau, ini juga memungkinkan Anda menjalankan pip tanpa akses root:

pip install boto

Ini bekerja untuk saya.

Sumber dari blog Wesley Tanaka: http://wtanaka.com/node/8095

yusong
sumber
1
Ini berhasil bagi saya untuk menginstal tanpa akses root di server linux. Terima kasih. Tetapi saya tidak tahu mengapa itu berhasil. Bisakah ada yang memberi petunjuk?
ChathuraG
9

Jika Anda harus menggunakan setup.pyskrip distutils , ada beberapa opsi baris perintah untuk memaksa tujuan instalasi. Lihat http://docs.python.org/install/index.html#alternate-installation . Jika masalah ini berulang, Anda dapat mengatur file konfigurasi distutils, lihat http://docs.python.org/install/index.html#inst-config-files .

Pengaturan variabel PYTHONPATH dijelaskan dalam posting tihos.

rocksportrocker
sumber
1
Terima kasih banyak. Saya telah berhasil menginstal lxmlperpustakaan menggunakanpython <lxml_distrib_dir>/setup.py install --home=<dir>
Serge S.
6

Pertanyaan penting Server yang saya gunakan (Ubuntu 12.04) telah easy_install3tetapi tidak pip3. Ini adalah bagaimana saya menginstal Pip dan kemudian paket lain ke folder rumah saya

  1. Admin yang diminta untuk menginstal paket Ubuntu python3-setuptools

  2. Dipasang pip

Seperti ini:

 easy_install3 --prefix=$HOME/.local pip
 mkdir -p $HOME/.local/lib/python3.2/site-packages
 easy_install3 --prefix=$HOME/.local pip
  1. Tambahkan Pip (dan aplikasi Python lainnya ke jalur)

Seperti ini:

PATH="$HOME/.local/bin:$PATH"
echo PATH="$HOME/.local/bin:$PATH" > $HOME/.profile
  1. Instal paket Python

seperti ini

pip3 install --user httpie

# test httpie package
http httpbin.org
Kolonel Panic
sumber
4

Saya menggunakan JuJu yang pada dasarnya memungkinkan untuk memiliki distribusi linux yang sangat kecil (hanya berisi manajer paket) di dalam direktori $ HOME / .juju Anda.

Memungkinkan sistem kustom Anda di dalam direktori home dapat diakses melalui proot dan, karenanya, Anda dapat menginstal paket apa pun tanpa hak akses root. Ini akan berjalan dengan baik untuk semua distribusi linux utama, satu-satunya batasan adalah JuJu dapat berjalan pada kernel linux dengan versi minimum yang direkomendasikan versi 2.6.32.

Misalnya, setelah menginstal JuJu untuk menginstal pip cukup ketik yang berikut ini:

$>juju -f
(juju)$> pacman -S python-pip
(juju)> pip
pengguna967489
sumber
1

Instal virtualenv secara lokal ( sumber instruksi ):

Penting: Masukkan rilis saat ini (seperti 16.1.0 ) untuk XXX .
Periksa nama file yang diekstraksi dan masukkan untuk 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

Sebelum Anda dapat menggunakan atau menginstal paket apa pun yang Anda butuhkan ke sourcelingkungan Python virtual Anda env:

$ source env/bin/activate

Untuk menginstal paket python baru (seperti numpy), gunakan:

(env)$ pip install <package>
Niklas
sumber
Ini pada dasarnya adalah versi terbaru dari instruksi luar biasa . Instruksinya sudah usang. Hasil edit saya ditolak. Karena itu saya mempostingnya sebagai instruksi baru.
Niklas