virtualenvwrapper và Python 3


119

Tôi đã cài đặt python 3.3.1 trên ubuntu lucid và tạo thành công một virtualenv như bên dưới

virtualenv envpy331 --python=/usr/local/bin/python3.3

điều này đã tạo ra một thư mục envpy331trên dir nhà của tôi.

Tôi cũng đã virtualenvwrappercài đặt, nhưng trong tài liệu chỉ có 2.4-2.7các phiên bản của pythonđược hỗ trợ..Có ai đã cố gắng tổ chức python3virtualenv không? Nếu vậy, bạn có thể cho tôi biết làm thế nào?


1
Vấn đề với điều đó là pip vẫn là pip python2, phải không? Tôi nghĩ những gì bạn muốn là virtualenvwrapper để sử dụng pyvenvthay vìvirtualenv
erikbwork

Câu trả lời:



240

Nếu bạn đã cài đặt python3 cũng như virtualenvwrapper, điều duy nhất bạn cần làm để sử dụng python3 với môi trường ảo là tạo môi trường bằng:

which python3 #Output: /usr/bin/python3
mkvirtualenv --python=/usr/bin/python3 nameOfEnvironment

Hoặc, (ít nhất là trên OSX sử dụng bia):

mkvirtualenv --python=`which python3` nameOfEnvironment

Bắt đầu sử dụng môi trường và bạn sẽ thấy rằng ngay sau khi nhập python, bạn sẽ bắt đầu sử dụng python3


12
Không hoàn toàn phù hợp với tôi trên OSX với 2.7.8 và 3.4.1 được cài đặt song song với nhau qua bia. Tuy nhiên, sửa đổi nó thành "mkvirtualenv --python =` mà python3` nameOfEnosystem "đã hoạt động hoàn hảo.
Chris Doggett

@ChrisDoggett tương tự trên Ubuntu 14.10.
z0r

4
Trên Ubuntu, lệnh sẽ là: mkvirtualenv --python = / usr / bin / python3 your-env-name
Vasiliy Toporov

2
Nếu bạn sử dụng bash, bạn có thể làm thay thế để tiết kiệm một dòng -mkvirtualenv --python=$(which python3) nameOfEnvironment
d4nyll

những gì là thực sự tuyệt vời là để tạo ra các bí danh bash sau alias mkvirtualenv3="mkvirtualenv --python=$(which python3.6)"- sau đó nó dễ dàng để tạo virtualenvs cho python 2 hoặc 3
robertmoggach

52

Bạn có thể làm cho virtualenvwrapper sử dụng một tệp nhị phân Python tùy chỉnh thay vì một virtualenvwrapper được chạy với. Để làm điều đó, bạn cần sử dụng biến VIRTUALENV_PYTHON được virtualenv sử dụng:

$ export VIRTUALENV_PYTHON=/usr/bin/python3
$ mkvirtualenv -a myproject myenv
Running virtualenv with interpreter /usr/bin/python3
New python executable in myenv/bin/python3
Also creating executable in myenv/bin/python
(myenv)$ python
Python 3.2.3 (default, Oct 19 2012, 19:53:16) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

2
Điều này thực sự đã lỗi thời. Thay vì đặt một biến môi trường, bạn nên sử dụng tham số --python hiện được Jonathan đề xuất.
AlexLordThorsen

6
@Rawrgulmuffins Tại sao? Điều này tránh phải chỉ định phiên bản python cho mỗi env mới.
Joost

@Joost Đó là một điểm công bằng. Cá nhân tôi cảm thấy đó là một nhược điểm nhưng tôi có thể hiểu tại sao mọi người lại thích điều đó.
AlexLordThorsen

21

virtualenvwrapper hiện cho phép bạn chỉ định tệp thực thi python mà không cần đường dẫn.

Vì vậy, (ít nhất trên OSX) mkvirtualenv --python=python3 nameOfEnvironmentsẽ đủ.


2
Cần hai dấu gạch ngang. Sẽ chỉnh sửa, nhưng SE yêu cầu 6 ký tự và thay đổi chỉ cần một ký tự.
jwogrady

20

Trên Ubuntu; sử dụng mkvirtualenv -p python3 env_nametải virtualenv với python3.

Bên trong env, sử dụng python --versionđể xác minh.


1
python --versionđể hiển thị phiên bản
Dos

20

Bạn có thể thêm cái này vào .bash_profile của mình hoặc tương tự:

alias mkvirtualenv3='mkvirtualenv --python=`which python3`'

Sau đó, sử dụng mkvirtualenv3thay vì mkvirtualenvkhi bạn muốn tạo môi trường python 3.


13

Tôi thấy rằng đang chạy

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

export VIRTUALENVWRAPPER_VIRTUALENV=/usr/bin/virtualenv-3.4

trong dòng lệnh trên Ubuntu buộc mkvirtualenv sử dụng python3 và virtualenv-3.4. Người ta vẫn phải làm

mkvirtualenv --python=/usr/bin/python3 nameOfEnvironment

để tạo ra môi trường. Điều này giả sử rằng bạn có python3 trong / usr / bin / python3 và virtualenv-3.4 trong /usr/local/bin/virtualenv-3.4.


Chỉ cần sử dụng which python2.4hoặc which python3.5hoặc which python3.6để tìm thư mục cho--python=DIRECTORY
Santhosh

5

Bài đăng này trên trình theo dõi vấn đề bitbucket của virtualenvwrapper có thể được quan tâm. Ở đó có đề cập rằng hầu hết các chức năng của virtualenvwrapper hoạt động với môi trường ảo venv trong Python 3.3.


0

Tôi đã thêm vào như thế này export VIRTUALENV_PYTHON=/usr/bin/python3của tôi ~/.bashrc:

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENV_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

sau đó chạy source .bashrc

và bạn có thể chỉ định phiên bản python cho mỗi env mới mkvirtualenv --python=python2 env_name

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.