Bagaimana cara mengatur dan menggunakan lingkungan python virtual di Ubuntu?

73

Lingkungan virtual Python digunakan untuk membuat lingkungan python terisolasi untuk menghindari ketergantungan dan konflik versi, dan juga secara tidak langsung menangani masalah izin. Tetapi apa cara termudah untuk mengaturnya, dan menggunakannya, di Ubuntu?

Burger Gerhard
sumber

Jawaban:

99

Dengan virtualenvwrapper(pembungkus yang mudah digunakan untuk fungsi virtualenv)

Instal virtualenv

Instal virtualenvdengan

sudo apt-get install virtualenv

(untuk Ubuntu 14.04 (terpercaya) instal python-virtualenv)

Instal virtualenvwrapper

Alasan kami juga menginstal virtualenvwrapper adalah karena ia menawarkan perintah yang bagus dan sederhana untuk mengelola lingkungan virtual Anda. Ada dua cara untuk menginstal virtualenvwrapper:

Sebagai paket Ubuntu (dari Ubuntu 16.04)

Lari

sudo apt install virtualenvwrapper

lalu lari

echo "source /usr/share/virtualenvwrapper/virtualenvwrapper.sh" >> ~/.bashrc

Menggunakan pip

  1. Instal dan / atau perbarui pip

    Instal pip untuk Python 2 dengan

    sudo apt-get install python-pip

    atau untuk Python 3

    sudo apt-get install python3-pip

    (jika Anda menggunakan Python 3, Anda mungkin perlu menggunakannya pip3daripada pipdi sisa panduan ini).

    Opsional (tetapi disarankan): Nyalakan bash autocomplete untuk pip

    Lari

    pip completion --bash >> ~/.bashrc

    dan jalankan source ~/.bashrcuntuk mengaktifkan.

  2. Instal virtualenvwrapper

    Karena kami ingin menghindarisudo pip kami menginstal virtualenvwrappersecara lokal (secara default di bawah ~/.local) dengan:

    pip install --user virtualenvwrapper

    dan

    echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
  3. Sumber virtualenvwrapper di .bashrc

    echo "source ~/.local/bin/virtualenvwrapper.sh" >> ~/.bashrc

Setup virtualenv dan virtualenvwrapper:

Pertama kita mengekspor WORKON_HOMEvariabel yang berisi direktori tempat lingkungan virtual kita disimpan. Mari kita buat ini~/.virtualenvs

export WORKON_HOME=~/.virtualenvs

sekarang juga buat direktori ini

mkdir $WORKON_HOME

dan letakkan ekspor ini di ~/.bashrcfile kami sehingga variabel ini otomatis ditentukan

echo "export WORKON_HOME=$WORKON_HOME" >> ~/.bashrc

Kami juga dapat menambahkan beberapa trik tambahan seperti berikut ini, yang memastikan bahwa jika pipmenciptakan lingkungan virtual tambahan, ia juga ditempatkan di WORKON_HOMEdirektori kami :

echo "export PIP_VIRTUALENV_BASE=$WORKON_HOME" >> ~/.bashrc 

Sumber ~ / .bashrc untuk memuat perubahan

source ~/.bashrc

Tes apakah berhasil

Sekarang kita menciptakan lingkungan virtual pertama kita. The -pargumen adalah opsional, digunakan untuk mengatur versi Python untuk menggunakan; bisa juga python3misalnya.

mkvirtualenv -p python2.7 test

Anda akan melihat bahwa lingkungan akan diatur, dan prompt Anda sekarang termasuk nama lingkungan aktif Anda dalam tanda kurung. Juga jika sekarang Anda jalankan

python -c "import sys; print sys.path"

Anda akan melihat banyak /home/user/.virtualenv/...karena sekarang tidak menggunakan paket situs sistem Anda.

Anda dapat menonaktifkan lingkungan Anda dengan menjalankan

deactivate

dan jika Anda ingin mengerjakannya lagi, cukup ketik

workon test

Terakhir, jika Anda ingin menghapus lingkungan Anda, ketikkan

rmvirtualenv test

Nikmati!


Terima kasih kepada penulis posting blog ini .

Burger Gerhard
sumber
2
python-pipdan python-virtualenvdapat diinstal melalui repetisi Ubuntu, tidak perlu untuk instalasi manual.
Timo
2
Namun, di Ubuntu, kami merekomendasikan paket Ubuntu, karena berbagai alasan. Tidak ada yang salah dengan versi pip atau virtualenv yang lebih lama, mereka sangat mampu.
tumbleweed
1
@ GreerhardBurger: Jika Anda membuat virtualenv python3, itu akan mendapatkan pip yang bekerja di python3. Jika Anda menggunakan virtualenv Ubuntu untuk membuat virtualenv, semua yang Anda lakukan akan terkandung dalam virtualenv. Jika Anda memulai hal-hal sudo easy_installing, itu akan meninggalkan kekacauan di / usr / local, itu tidak mudah untuk dibersihkan, tanpa banyak keuntungan.
tumbleweed
sepertinya alias tidak diperlukan sekarang: --no-site-packagesdefault dan --distributeusang
int_ua
Jika mkvirtualenv testtidak bekerja, lihat juga: stackoverflow.com/questions/15608236/…
Nikos Alexandris
8

Lingkungan virtual menawarkan cara untuk mengelola dan mengisolasi dependensi berdasarkan per proyek. Selain itu, mereka juga menghindari seluruh sudo pip installsituasi, yang merupakan risiko keamanan seperti yang telah saya jelaskan di https://askubuntu.com/a/802594/15003 . Dokumentasi Python resmi juga mendorong penggunaan lingkungan virtual .

Cara termudah untuk membuat dan menggunakan lingkungan virtual untuk Python 2 dan Python 3 adalah menginstal virtualenvmenggunakan aptatau apt-get. Untuk setiap proyek Python, buat virtualenv dan kemudian aktifkan. Perhatikan bahwa virtualenv khusus untuk versi Python tertentu. Setelah aktivasi, gunakan pipuntuk menginstal paket Python seperti biasa terlepas dari apakah Anda menggunakan Python 2 atau 3; tidak perlu digunakan pip3untuk Python 3. sudohanya digunakan untuk menginstal virtualenvdan tidak digunakan dengan pip, oleh karena itu menghindari risiko keamanan yang disebutkan di atas. Perintah untuk melakukannya adalah:

sudo apt update
sudo apt install virtualenv
cd ~/desired_directory  # cd to desired_directory
virtualenv venv  # create virtualenv named venv for default system Python, which is Python 2 for Ubuntu
source venv/bin/activate  # activate virtualenv
pip install -U pip  # upgrade pip in case it is outdated
pip install desired_package  # install desired_package

Jika Anda ingin membuat virtualenv untuk Python 3, ganti virtualenv venvdengan:

virtualenv venv -p python3

Baca lebih lanjut tentang berbagai lonceng dan peluit virtualenvdi https://virtualenv.pypa.io/en/stable/ .

edwinksl
sumber
1
sourcemenghemat banyak perintah
vnpnlz
OSError: [Errno 40] Terlalu banyak level tautan simbolik: '/ var / www / html / python / check / venv / bin / python'
Saravanan Nandhan
@SaravananNandhan Silakan ajukan pertanyaan baru dengan rincian yang diperlukan sebagai gantinya.
edwinksl
3

Dengan modul venv tersedia dari Python 3.3 (dan Ubuntu 15.10)

Lingkungan virtual (venvs) sangat populer sehingga fungsinya sekarang termasuk dalam python itu sendiri (mulai dari 3.3 dan seterusnya). Untuk menggunakannya di Ubuntu, Anda perlu menginstal python3-venv(karena ensurepipmodul tidak tersedia):

sudo apt-get install python3-venv

Setelah itu bisa Anda gunakan

pyvenv myvirtualenv

untuk membuat lingkungan virtual yang disebut myvirtualenv. Anda kemudian dapat menggunakan

source myvirtualenv/bin/activate

untuk mengaktifkan lingkungan virtual. Untuk menonaktifkan cukup ketik

deactivate

EDIT: The pyvenvScript telah usang dalam mendukung python3 -m venv. Ini mencegah kebingungan tentang apa interpreter Python pyvenvterhubung dan dengan demikian apa interpreter Python akan digunakan oleh lingkungan virtual. ( sumber )

Burger Gerhard
sumber