Làm cách nào để thiết lập và sử dụng môi trường python ảo trong Ubuntu?


73

Các môi trường ảo Python được sử dụng để tạo các môi trường python bị cô lập để tránh xung đột phụ thuộc và phiên bản, và cũng gián tiếp xử lý các vấn đề về quyền. Nhưng cách dễ nhất để thiết lập và sử dụng nó trong Ubuntu là gì?

Câu trả lời:


99

Với virtualenvwrapper(trình bao bọc thân thiện với người dùng cho chức năng của virtualenv)

Cài đặt virtualenv

Cài đặt virtualenvvới

sudo apt-get install virtualenv

(cho cài đặt Ubuntu 14.04 (đáng tin cậy) python-virtualenv)

Cài đặt virtualenvwrapper

Lý do chúng tôi cũng đang cài đặt virtualenvwrapper là vì nó cung cấp các lệnh đơn giản và đẹp để quản lý môi trường ảo của bạn. Có hai cách để cài đặt virtualenvwrapper:

Là gói Ubuntu (từ Ubuntu 16.04)

Chạy

sudo apt install virtualenvwrapper

sau đó chạy

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

Sử dụng pip

  1. Cài đặt và / hoặc cập nhật pip

    Cài đặt pip cho Python 2 với

    sudo apt-get install python-pip

    hoặc cho Python 3

    sudo apt-get install python3-pip

    (nếu bạn sử dụng Python 3, bạn có thể cần sử dụng pip3thay vì piptrong phần còn lại của hướng dẫn này).

    Tùy chọn (nhưng được khuyến nghị): Bật bash autocomplete cho pip

    Chạy

    pip completion --bash >> ~/.bashrc

    và chạy source ~/.bashrcđể kích hoạt.

  2. Cài đặt virtualenvwrapper

    Bởi vì chúng tôi muốn tránhsudo pip chúng tôi cài đặt virtualenvwrappercục bộ (theo mặc định bên dưới ~/.local) với:

    pip install --user virtualenvwrapper

    echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
  3. Nguồn virtualenvwrapper trong .bashrc

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

Thiết lập virtualenv và virtualenvwrapper:

Đầu tiên chúng ta xuất WORKON_HOMEbiến chứa thư mục chứa môi trường ảo của chúng ta. Hãy làm điều này~/.virtualenvs

export WORKON_HOME=~/.virtualenvs

bây giờ cũng tạo thư mục này

mkdir $WORKON_HOME

và đặt xuất này trong ~/.bashrctệp của chúng tôi để biến này được tự động xác định

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

Chúng tôi cũng có thể thêm một số thủ thuật bổ sung như sau, điều này đảm bảo rằng nếu piptạo thêm một môi trường ảo, nó cũng được đặt trong WORKON_HOMEthư mục của chúng tôi :

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

Nguồn ~ / .bashrc để tải các thay đổi

source ~/.bashrc

Kiểm tra nếu nó hoạt động

Bây giờ chúng tôi tạo ra môi trường ảo đầu tiên của chúng tôi. Đối -psố là tùy chọn, nó được sử dụng để đặt phiên bản Python sử dụng; nó cũng có thể là python3ví dụ

mkvirtualenv -p python2.7 test

Bạn sẽ thấy môi trường sẽ được thiết lập và lời nhắc của bạn hiện bao gồm tên của môi trường hoạt động của bạn trong ngoặc đơn. Ngoài ra nếu bây giờ bạn chạy

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

bạn sẽ thấy rất nhiều /home/user/.virtualenv/...vì hiện tại nó không sử dụng các gói trang web hệ thống của bạn.

Bạn có thể hủy kích hoạt môi trường của mình bằng cách chạy

deactivate

và nếu bạn muốn làm việc lại, chỉ cần gõ

workon test

Cuối cùng, nếu bạn muốn xóa môi trường của mình, hãy gõ

rmvirtualenv test

Thưởng thức!


Cảm ơn tác giả của blogpost này .


2
python-pippython-virtualenvcó thể cài đặt thông qua bản sửa lỗi Ubuntu, không cần cài đặt thủ công.
Timo

2
Tuy nhiên, trong Ubuntu, chúng tôi khuyên dùng các gói Ubuntu, vì nhiều lý do. Không có gì sai với các phiên bản cũ hơn của pip hoặc virtualenv, chúng hoàn toàn có khả năng.
tumbleweed

1
@GerhardBurger: Nếu bạn tạo một ảoen python3, nó sẽ nhận được một pip hoạt động trong python3. Nếu bạn sử dụng virtualenv của Ubuntu để tạo virtualenv, mọi thứ bạn đã thực hiện sẽ được chứa trong virtualenv. Nếu bạn bắt đầu sudo easy_installing Stuff, nó sẽ để lại một mớ hỗn độn trên / usr / local, điều đó không tầm thường để dọn dẹp, mà không thu được nhiều lợi ích.
tumbleweed

có vẻ như không cần bí danh bây giờ: --no-site-packagesmặc định và --distributekhông dùng nữa
int_ua 27/11/13

Trong trường hợp mkvirtualenv testkhông hoạt động, xem thêm: stackoverflow.com/questions/15608236/ Kẻ
Nikos Alexandris

8

Các môi trường ảo cung cấp một cách để quản lý và cô lập các phụ thuộc trên cơ sở từng dự án. Hơn nữa, họ cũng tránh được toàn bộ sudo pip installtình huống, đó là một rủi ro bảo mật như tôi đã giải thích trong https://askubfox.com/a/802594/15003 . Tài liệu Python chính thức cũng khuyến khích sử dụng môi trường ảo .

Cách dễ nhất để tạo và sử dụng môi trường ảo cho cả Python 2 và Python 3 là cài đặt virtualenvbằng apthoặc apt-get. Đối với mỗi dự án Python, tạo một virtualenv và sau đó kích hoạt nó. Lưu ý rằng virtualenv dành riêng cho một phiên bản Python cụ thể. Sau khi kích hoạt, sử dụng pipđể cài đặt các gói Python như bình thường bất kể bạn đang sử dụng Python 2 hay 3; không cần sử dụng pip3cho Python 3. sudochỉ được sử dụng để cài đặt virtualenvvà không được sử dụng pip, do đó tránh được rủi ro bảo mật đã nói ở trên. Các lệnh để làm như vậy là:

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

Nếu bạn muốn tạo một virtualenv cho Python 3, hãy thay thế virtualenv venvbằng:

virtualenv venv -p python3

Đọc thêm về nhiều loại chuông và còi khác nhau virtualenvtại https://virtualenv.pypa.io/en/ sóng / .


1
sourcetiết kiệm cho tôi rất nhiều lệnh
vnpnlz

OSError: [Errno 40] Quá nhiều cấp độ liên kết tượng trưng: '/ var / www / html / python / check / venv / bin / python'
Saravanan Nandhan

@SaravananNandhan Vui lòng đặt câu hỏi mới với các chi tiết cần thiết thay thế.
edwinksl


3

Với mô-đun venv có sẵn từ Python 3.3 (và Ubuntu 15.10)

Các môi trường ảo (venvs) rất phổ biến đến nỗi chức năng hiện được bao gồm trong chính python (từ 3.3 trở đi). Để sử dụng nó trên Ubuntu, bạn cần cài đặt python3-venv(vì ensurepipmô-đun không có sẵn):

sudo apt-get install python3-venv

Sau đó bạn có thể sử dụng

pyvenv myvirtualenv

để tạo ra một môi trường ảo được gọi là myvirtualenv. Sau đó bạn có thể sử dụng

source myvirtualenv/bin/activate

để kích hoạt môi trường ảo. Để hủy kích hoạt, chỉ cần gõ

deactivate

EDIT: Các pyvenvkịch bản đã được phản đối ủng hộ python3 -m venv. Điều này ngăn ngừa sự nhầm lẫn về những gì trình thông dịch Python pyvenvđược kết nối với và do đó, trình thông dịch Python sẽ được sử dụng bởi môi trường ảo. ( nguồn )

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.