Sử dụng phiên bản Python khác với virtualenv


1115

Tôi có một hệ thống Debian hiện đang chạy với python 2.5.4. Tôi đã cài đặt virtualenv đúng cách, mọi thứ đều hoạt động tốt. Có khả năng tôi có thể sử dụng virtualenv với một phiên bản Python khác không?

Tôi đã biên dịch Python 2.6.2 và muốn sử dụng nó với một số virtualenv. Có đủ để ghi đè lên tệp nhị phân không? Hay tôi phải thay đổi một cái gì đó liên quan đến các thư viện?


8
Chỉ cần đề cập rằng bạn có thể làm điều này bằng cách sử dụng virtualenvwrapper.
thiên vị

13
Đáng chú ý là trong python 3, có một tương đương virtualenv tích hợp: venv .
ness101

2
Có phải là không thể chuyển đổi phiên bản python trong môi trường hiện tại mà không tạo ra một môi trường mới?
Charlie Parker

Câu trả lời:


1542

Chỉ cần sử dụng tùy chọn --python(hoặc ngắn -p) khi tạo cá thể virtualenv của bạn để chỉ định thực thi Python bạn muốn sử dụng, ví dụ:

virtualenv --python=/usr/bin/python2.6 <path/to/new/virtualenv/>

NB Đối với Python 3.3 trở lên, hãy tham khảo câu trả lời của Aelfinn bên dưới.


160
Tôi hình dung tôi cũng đề cập rằng nó cũng hoạt động với virtualenvwrappers: mkvirtualenv -p python2.6 env
bias

65
Tôi đang thiếu một cái gì đó ở đây - không phải điều này yêu cầu 2.6 đã được cài đặt trên hệ thống? Tôi nghĩ rằng điểm của virtualenv là tôi có thể có một phiên bản python khác với phiên bản chính (trong trường hợp của tôi, 2.4 trên CentOS). Tôi đã giả sử rằng tôi có thể cài đặt virtualenv, sau đó cài đặt Python 2.6 cho nó trong các gói trong env để sử dụng?
John C

42
@ John có, bạn có. Đó không phải là điểm của virtualenv: mục đích của việc đó là tạo ra một môi trường hộp cát cho Python. Bạn sẽ cần cài đặt phiên bản đó trước - bạn có thể cài đặt phiên bản cục bộ cho người dùng của mình.
Daniel Roseman

8
@JohnC Bạn có thể sử dụng pythonbrew để cài đặt các pythons thay thế.
ashwoods

54
Nếu bạn là một người lười biếng:virtualenv -p `which python2.6` <path/to/new/virtualenv>
rực sáng

293

Kể từ Python 3, Python Docs đề xuất tạo môi trường ảo bằng lệnh sau:

python3 -m venv <myenvname>

Xin lưu ý rằng venvkhông cho phép tạo môi trường ảo với các phiên bản Python khác. Đối với điều đó, cài đặt và sử dụng virtualenv gói .


Thông tin lỗi thời

Các pyvenv kịch bản có thể được sử dụng để tạo ra một môi trường ảo

pyvenv /path/to/new/virtual/environment

nhưng nó đã bị phản đối kể từ Python 3.6.


8
Vui mừng bạn chỉ ra rằng, nó cần khuyến mãi nhiều hơn. Một nit nhỏ: họ hiện đang ủng hộ việc chạy nó như là python3 -m venv <envname>để ngăn chặn các kịch bản còn sơ khai cho mọi thứ.
Paul Everitt

6
Trong thực tế, pyvenvtập lệnh không được dùng trong Python 3.6+, mặc dù bản venvthân mô-đun bên dưới thì không. Vì vậy, sử dụng python 3 -m venv <myenvname>như @PaulEveritt nói.
RichVel

5
Được cảnh báo rằng pyvenvhoặc python3 -m venv ...KHÔNG cài đặt python-configtập lệnh. Điều này có nghĩa là ngay cả sau khi kích hoạt môi trường Python3 của bạn, toàn hệ thống python-configsẽ được gọi với các hậu quả khó hiểu. Xem báo cáo lỗi này từ năm 2011 github.com/pypa/virtualenv/issues/169 và câu hỏi của tôi stackoverflow.com/questions/42020937/ (
Laryx Decidua 23/2/18

1
"Xin lưu ý rằng venvkhông cho phép tạo virtualenv với các phiên bản Python khác." - Bạn có chắc điều này là đúng? Nó dường như chỉ hoạt động tốt với tôi nếu tôi tạo nó với một phiên bản Python cụ thể, ví dụ python3.5 -m venv <myenvname>(với điều kiện tôi có sẵn phiên bản Python đó).
Dominick Pastore

5
Xác nhận rằng quan sát của @ Nick hoạt động: Cách tạo một venvphiên bản Python cụ thể là sử dụng phiên bản đó khi thiết lập nó. Ví dụ:python3.5 -m venv venv
tanius

183

Đây là các bước bạn có thể làm theo khi bạn ở trong môi trường lưu trữ được chia sẻ và cần cài đặt & biên dịch Python từ nguồn và sau đó tạo venvtừ phiên bản Python của bạn. Đối với Python 2.7.9. bạn sẽ làm một cái gì đó dọc theo những dòng này:

mkdir ~/src
wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
mkdir ~/.localpython
./configure --prefix=$HOME/.localpython
make
make install

ảo env

cd ~/src
wget https://pypi.python.org/packages/5c/79/5dae7494b9f5ed061cff9a8ab8d6e1f02db352f3facf907d9eb614fb80e9/virtualenv-15.0.2.tar.gz#md5=0ed59863994daf1292827ffdbba80a63
tar -zxvf virtualenv-15.0.2.tar.gz
cd virtualenv-15.0.2/
~/.localpython/bin/python setup.py install
virtualenv ve -p $HOME/.localpython/bin/python2.7
source ve/bin/activate   

Đương nhiên, điều này có thể áp dụng cho mọi tình huống mà bạn muốn sao chép chính xác môi trường bạn làm việc và triển khai.


2
Bạn có thể giải thích lý do tại sao phải làm theo cách đó: Tại sao cài đặt python cục bộ? Và quan trọng hơn là tại sao cài đặt virtualenv bằng phiên bản python mà bạn muốn sử dụng với nó ?
lajarre

15
chắc chắn rồi. Nếu bạn đang ở trong môi trường lưu trữ ảo và máy chủ cung cấp các phiên bản python cũ hơn mà bạn không hài lòng - đó là trường hợp của tôi. Ngoài ra nếu bạn tình cờ phát triển các dự án trên các máy chủ khác nhau và bạn muốn sao chép các môi trường này trên máy cục bộ của mình .... Virtualenv tạo các liên kết cứng đến libs python. Vì vậy, nó thực sự quan trọng với phiên bản python bạn đang sử dụng để cài đặt và tạo Virtualenv từ đó.
zzart

6
Hoặc nếu bạn giống như tôi và đang ở trong một máy bị khóa trong công việc không có đặc quyền sudo. Bản sao cục bộ của thư viện, cơ sở dữ liệu SQL, ngôn ngữ và trình biên dịch galore! Cảm ơn!
zachd1_618

4
Theo virtualenv 1.9.1, tôi phải sử dụng ~/.localpython/bin/virtualenvthay vì chỉ virtualenvđể thiết lập hoàn thành mà không gặp lỗi. Ngoài ra, sử dụng source ve/bin/activatethay vì source activate.
Saul

3
Một lý do khác để làm điều này là để thử betas trước khi chúng đi vào chính để đảm bảo các dự án của bạn và các phần phụ thuộc của chúng vẫn hoạt động mà không có nguy cơ phá vỡ quản lý gói của bạn bằng cách ghi đè lên một cái gì đó và để các tệp lủng lẳng khắp nơi. Tôi thích câu trả lời này.
RobotHumans

103
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>

2
Xem câu trả lời của tôi dưới đây cho một giải pháp tương đương bằng cách sử dụng các biến môi trường. Cách tiếp cận đó có nghĩa là bạn không cần phải nhớ sử dụng -p.
Chris Johnson

5
Có giải pháp nào chuyển đổi giữa các phiên bản python mà không yêu cầu tạo môi trường ảo mới không?
Charlie Parker

3
Điều này có hoạt động không, nếu bạn muốn cài đặt phiên bản python chưa được cài đặt trên hệ thống của bạn? Nói rằng bạn muốn kiểm tra python3.6nhưng không muốn chạm python3.5vào cài đặt trên máy tính của bạn?
alpha_989

1
@ alpha_989 bạn có tìm được giải pháp để làm việc này không?
Daniil Mashkin

97

Co một cach dê dang hơn,

virtualenv venv --python=python2.7

Nhờ một nhận xét, điều này chỉ hoạt động nếu bạn đã cài đặt python2.7 ở cấp hệ thống (ví dụ: /usr/bin/python2.7).

Mặt khác, nếu bạn đang sử dụng homebrew, bạn có thể sử dụng đường dẫn để cung cấp cho bạn những gì bạn muốn.

virtualenv venv --python=/usr/local/bin/python

Bạn có thể tìm đường dẫn đến cài đặt python của bạn với

which python

Điều này cũng sẽ làm việc với python 3.

which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3

Cuối cùng ngưng tụ để:

virtualenv venv -p `which python`
virtualenv venv -p `which python3`

1
FYI, chỉ hoạt động nếu bạn đã cài đặt python2.7 ở cấp hệ thống (ví dụ: /usr/bin/python2.7)
kingb12

Tôi đã có thể làm điều này với virtualenv venv --python=python3.6cũng
Jordan

Bạn thực sự có thể thả số phiên bản nhỏ. virtualenv env --python=python2
Anshul

Đó là một giải pháp phù hợp, một khi bạn có tất cả các phiên bản, bạn sẽ quan tâm đến việc sử dụng bí danh không phải là đường dẫn đầy đủ
user1767754

Trong Windows, điều này làm việc như một nét duyên dáng với một tinh chỉnh nhỏ: virtualenv venv --python=<insert_your_python_version_here>nơi <insert_your_python_version_here>là trong trường hợp của tôiC:\Python\Python368\python.exe
abautista

70

Trong Windows đối với tôi, công việc này:

virtualenv --python=c:\Python25\python.exe envname

không python.exeWindowsError: [Error 5] Access is denied tôi đã cài đặt Python2.7.1 với virtualenv 1.6.1 và tôi muốn python 2.5.2.


32

Mac OSX 10.6.8 (Báo tuyết):

1) Khi bạn thực hiện pip install virtualenv, lệnh pip được liên kết với một trong các phiên bản python của bạn và virtualenvđược cài đặt vào phiên bản python đó. Bạn có thể làm

 $ which pip   

để xem phiên bản nào của python. Nếu bạn thấy một cái gì đó như:

 $ which pip
 /usr/local/bin/pip

sau đó làm:

$ ls -al /usr/local/bin/pip
lrwxrwxr-x  1 root  admin  65 Apr 10  2015 /usr/local/bin/pip ->
../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip

Bạn có thể thấy phiên bản python ở đầu ra.

Theo mặc định, đó sẽ là phiên bản của python được sử dụng cho bất kỳ môi trường mới nào bạn tạo. Tuy nhiên, bạn có thể chỉ định bất kỳ phiên bản python nào được cài đặt trên máy tính của mình để sử dụng bên trong một môi trường mới với -p flag:

$ virtualenv -p python3.2 my_env  
Running virtualenv with interpreter /usr/local/bin/python3.2  
New python executable in my_env/bin/python  
Installing setuptools, pip...done.  

virtualenv my_env sẽ tạo một thư mục trong thư mục hiện tại chứa các tệp thực thi Python và một bản sao của lệnh pip [lệnh] mà bạn có thể sử dụng để cài đặt các gói khác.

http://docs.python-guide.org/en/latest/dev/virtualenvs/

virtualenv chỉ cần sao chép python từ một vị trí trên máy tính của bạn vào thư mục my_env / bin / mới được tạo.

2) Theo /usr/binmặc định, python hệ thống đang ở trong khi các phiên bản python khác nhau mà tôi đã cài đặt được cài đặt vào:

 /usr/local/bin

3) Các pythons khác nhau mà tôi đã cài đặt có tên như python2.7hoặc python3.2và tôi có thể sử dụng các tên đó thay vì đường dẫn đầy đủ.

======== VIRTUALENVWRAPPER =========

1) Tôi gặp một số vấn đề khi sử dụng virtualenvwrapper. Đây là những gì tôi đã đưa vào ~/.bash_profile:

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/django_projects  #Not very important -- mkproject command uses this
#Added the following based on: 
#http://stackoverflow.com/questions/19665327/virtualenvwrapper-installation-snow-leopard-python
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7 
#source /usr/local/bin/virtualenvwrapper.sh
source /Library/Frameworks/Python.framework/Versions/2.7/bin/virtualenvwrapper.sh

2) Các -p optionhoạt động khác nhau với virtualenvwrapper: Tôi phải chỉ định đường dẫn đầy đủ đến trình thông dịch python sẽ được sử dụng trong môi trường mới (khi tôi không muốn sử dụng phiên bản python mặc định):

$ mkvirtualenv -p /usr/local/bin/python3.2 my_env
Running virtualenv with interpreter /usr/local/bin/python3
New python executable in my_env/bin/python
Installing setuptools, pip...done.
Usage: source deactivate

removes the 'bin' directory of the environment activated with 'source
activate' from PATH. 

Không giống như virtualenv, virtualenvwrapper sẽ tạo môi trường tại vị trí được chỉ định bởi biến môi trường $ WORKON_HOME. Điều đó giữ cho tất cả các môi trường của bạn ở một nơi.


which pipkhông cho tôi biết phiên bản của Python. Nó mang lại cho tôi this- /usr/local/bin/pip.
Sankalp

@Sankalp, Nếu bạn cd đến /usr/local/binvà làm $ ls -al pip, bạn sẽ thấy một cái gì đó như: pip -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip
7stud 16/03/18

Đã được lưu ý phần nào trong câu trả lời, nhưng mkprojectlà lệnh sử dụng nếu bạn muốn nó tạo cả thư mục dự án và môi trường ảo của một phiên bản python đã cho. mkproject -p /usr/bin/python3.6 myNewPython36Project
Jim Factor

22

Hai lệnh này sẽ hoạt động tốt.

virtualenv -p python2 myenv (Đối với python2)

virtualenv -p python3 myenv (Đối với trăn3)


1
Cờ -p python2 hoạt động tương đương với tìm kiếm / usr / bin / python2. Sử dụng: virtualenv -p python2.7 myenv cho 2.7, v.v.
Yash Sharma

21

Giả sử bạn hiện đã cài đặt python 2.7 trong virtualenv của mình. Nhưng muốn sử dụng python3.2, Bạn sẽ phải cập nhật điều này với:

$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv

Sau đó kích hoạt virtualenv của bạn bằng cách:

$ source activate name_of_your_virtualenv

và sau đó làm: python --versiontrong shell để kiểm tra xem phiên bản của bạn đã được cập nhật chưa.


Xem câu trả lời của tôi dưới đây cho một giải pháp tương đương bằng cách sử dụng các biến môi trường. Cách tiếp cận đó có nghĩa là bạn không cần phải nhớ sử dụng -p.
Chris Johnson

13

Bạn có thể gọi virtualenvvới phiên bản python bạn muốn. Ví dụ:

python3 -m virtualenv venv

Hoặc thay thế trực tiếp trỏ đến đường dẫn virtualenv của bạn. ví dụ cho các cửa sổ:

c:\Python34\Scripts\virtualenv.exe venv

Và bằng cách chạy:

venv/bin/python

Python 3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

bạn có thể thấy phiên bản python được cài đặt trong môi trường ảo


Tôi gặp lỗi này khi chạy lệnh đầu tiên / usr / local / bin / python3: Không có mô-đun nào có tên virtualenv
tanvi

2
@tanvi: Bạn cần cài đặt virtualenv vào python3 của bạn trước. Chạy pip3 install virtualenvtrước
Nima Soroush

12

Cách -ptiếp cận hoạt động tốt, nhưng bạn phải nhớ sử dụng nó mỗi lần. Nếu mục tiêu của bạn là chuyển sang một phiên bản Python mới hơn nói chung, đó là một nỗi đau và cũng có thể dẫn đến sai lầm.

Tùy chọn khác của bạn là đặt một biến môi trường thực hiện tương tự như -p. Đặt điều này qua ~/.bashrctệp của bạn hoặc bất cứ nơi nào bạn quản lý các biến môi trường cho các phiên đăng nhập của mình:

export VIRTUALENV_PYTHON=/path/to/desired/version

Sau đó virtualenvsẽ sử dụng bất cứ lúc nào bạn không chỉ định -ptrên dòng lệnh.


Điều này làm việc rất đẹp. Bất kỳ ý tưởng tại sao thiết lập export VIRTUALENVWRAPPER_PYTHON=/path/to/desired/versioncho các tài liệu virtualenvwrapper không hoạt động nhưng giải pháp này đã làm việc?
YPCrumble

Điều đó env var kiểm soát mà Python virtualenvwrappersử dụng khi chạy, không liên quan gì đến cài đặt.
Chris Johnson

Điều này làm việc cho tôi. Không còn phải sử dụng -p mỗi khi tôi tạo một virtualenv mới. Cảm ơn!
nedblorf

7

Thậm chí dễ dàng hơn, bằng cách sử dụng thay thế lệnh để tìm python2 cho bạn:

virtualenv -p $(which python2) <path/to/new/virtualenv/>

Hoặc khi sử dụng virtualenvwrapper:

mkvirtualenv -p $(which python2) <env_name>


7

Đối với Mac (High Sierra), hãy cài đặt virtualenv trên python3 và tạo virtualenv cho python2:

 $ python3 -m pip install virtualenv
 $ python3 -m virtualenv --python=python2 vp27
 $ source vp27/bin/activate
 (vp27)$ python --version
 Python 2.7.14

1
Cài đặt virtualenv trên python3 nếu bạn không có:python3 -m pip install virtualenv
Zihao Zhao

Nó không hoạt động. Phiên bản python của tôi vẫn là 3.
shivendra pratap singh

6

Trên mac tôi sử dụng pyenv và virtualenvwrapper. Tôi đã phải tạo một virtualenv mới. Bạn cần homebrew mà tôi cho rằng bạn đã cài đặt nếu bạn đang dùng mac, nhưng chỉ để giải trí:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


brew install pyenv
pyenv install 2.7.10
pyenv global 2.7.10
export PATH=/Users/{USERNAME}/.pyenv/versions/2.7.10/bin:$PATH
mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python  {virtual_env_name}

Tôi cũng đã đóng băng các yêu cầu của mình trước để có thể chỉ cần cài đặt lại trong virtualenv mới với:

pip install -r requirements.txt

Lệnh nên là mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python {virtual_env_name}phiên bản, không phải phiên bản. Nếu SO cho phép chỉnh sửa ngắn, tôi sẽ sửa nó.
Martin Burch

pyenvbao gồm hỗ trợ virtualenv thông qua pyenv-virtualenvplugin, vì vậy tôi thấy tôi không thực sự cần virtualenvwrapper. Thêm chi tiết trong câu trả lời pyenv của tôi .
RichVel

5

[Tháng 11 năm 2019] Tôi cần cài đặt môi trường Python 3.7 (env) trên hệ thống Arch Linux dựa trên Python 3.8 của tôi. Python 3.7 không còn trên hệ thống, vì vậy tôi không thể hạ cấp Python, để cài đặt gói mà tôi cần.

Hơn nữa, tôi muốn sử dụng gói đó / Python 3.7 trong một môi trường ảo (venv). Đây là cách tôi đã làm nó.


Tải xuống tệp nguồn phiên bản Python:

Tôi đã tải xuống các tệp nguồn Python 3.7.4 từ

https://www.python.org/doads/source/

đến

/mnt/Vancouver/apps/python_versions/src/Python-3.7.4.tgz

Sau đó tôi trích xuất kho lưu trữ đó (tệp nguồn) để

/mnt/Vancouver/apps/python_versions/src/Python-3.7.4/


Cài đặt:

[Lưu ý: trong hệ thống của tôi env, không phải là venv.]

cd /mnt/Vancouver/apps/python_versions/src/Python-3.7.4/
time ./configure                 ## 17 sec
time make                        ## 1 min 51 sec
time sudo make install           ## 18 sec
time make clean                  ## 0.3 sec

Kiểm tra các phiên bản Python đã cài đặt:

$ which python
/usr/bin/python

$ python --version
Python 3.8.0

$ which python3.7
/usr/local/bin/python3.7

$ python    ## Python 3.8 [system / env]
Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

$ python3.7    ## newly-installed Python 3.7 package
Python 3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.version)
3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0]
>>>

$ python3.7 --version                                                                                                 
Python 3.7.4

Cách tạo venv cho phiên bản Python cụ thể:

https://docs.python.org/3/tutorial/venv.html

12.2. TẠO MÔI TRƯỜNG VIRTUAL

Các mô-đun được sử dụng để tạo và quản lý môi trường ảo được gọi venv. venvthường sẽ cài đặt phiên bản Python mới nhất mà bạn có sẵn. Nếu bạn có nhiều phiên bản Python trên hệ thống của mình, bạn có thể chọn một phiên bản Python cụ thể bằng cách chạy python3 hoặc bất kỳ phiên bản nào bạn muốn.

Để tạo một môi trường ảo, hãy quyết định một thư mục mà bạn muốn đặt nó và chạy mô-đun venv dưới dạng một tập lệnh với đường dẫn thư mục:

python3 -m venv tutorial-env

Điều này sẽ tạo tutorial-envthư mục nếu nó không tồn tại và cũng tạo các thư mục bên trong nó chứa một bản sao của trình thông dịch Python, thư viện chuẩn và các tệp hỗ trợ khác nhau. ...


Tạo Python 3.7 venv [trên hệ điều hành / hệ điều hành Python 3.8]:

python3.7 -m venv ~/venv/py3.7      ## create Python 3.7-based venv
source ~/venv/py3.7/bin/activate    ## activate that venv
deactivate                          ## deactivate that venv (when done, there)

Đã thêm vào ~/.bashrc:

alias p37='echo "   [Python 3.7 venv (source ~/venv/py3.7/bin/activate)]" && source ~/venv/py3.7/bin/activate'

Kiểm tra Python 3.7 venv:

$ p37                                                                                                                 
[Python 3.7 venv (source ~/venv/py3.7/bin/activate)]

(py3.7)$ python --version
Python 3.7.4

(py3.7)$ python
Python 3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.version)
3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0] 
>>>

1
Đây là một câu trả lời cực kỳ kỹ lưỡng! :) Tôi gặp phải vấn đề này mỗi khi tôi cần chuyển một thứ gì đó từ Arch Linux sang bất kỳ hệ thống nào khác (ví dụ Debian-ish).
Robbie Capps

1
@Victoria Stuart, cảm ơn bạn rất nhiều. Điều này thật đúng với gì mà tôi đã tìm kiếm.
Daddyodevil

4

Trong hệ thống con windows cho linux:

  1. Tạo môi trường cho python3:

    virtualenv --python=/usr/bin/python3 env
  2. Kích hoạt nó:

    source env/bin/activate

3

Trên cửa sổ:

py -3.4x32 -m venv venv34

hoặc là

py -2.6.2 -m venv venv26

Điều này sử dụng pylauncher sẽ tìm đúng python thực thi cho bạn (giả sử bạn đã cài đặt nó).


3

, câu trả lời ở trên là chính xác và công trình tốt trên các hệ thống Unix dựa như Linux & MAC OS X .

Tôi đã cố gắng tạo virtualenv cho Python2 & Python3 bằng các lệnh sau.

Ở đây tôi đã sử dụng venv2 & venv3 làm tên của chúng cho Python2 & Python3 tương ứng.

Python2 »

MacBook-Pro-2:~ admin$ virtualenv venv2 --python=`which python2`
Running virtualenv with interpreter /usr/local/bin/python2
New python executable in /Users/admin/venv2/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ ls venv2/bin/
activate        easy_install        pip2.7          python2.7
activate.csh        easy_install-2.7    python          wheel
activate.fish       pip         python-config
activate_this.py    pip2            python2
MacBook-Pro-2:~ admin$ 

Python3 »

MacBook-Pro-2:~ admin$ virtualenv venv3 --python=`which python3`
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/admin/venv3/bin/python3
Also creating executable in /Users/admin/venv3/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ ls venv3/bin/
activate        easy_install        pip3.6          python3.6
activate.csh        easy_install-3.6    python          wheel
activate.fish       pip         python-config
activate_this.py    pip3            python3
MacBook-Pro-2:~ admin$ 

Kiểm tra vị trí cài đặt Python

MacBook-Pro-2:~ admin$ which python2
/usr/local/bin/python2
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ which python3
/usr/local/bin/python3
MacBook-Pro-2:~ admin$ 

2

Nó làm việc cho tôi

sudo apt-get install python3-minimal

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3

2

Tôi sử dụng pyenv để quản lý phiên bản python của tôi.

pyenv install 3.7.3
pyenv local 3.7.3

Kiểm tra phiên bản python của bạn:

$ python --version
Python 3.7.3

Tạo môi trường ảo với venv :

python -m venv .

Sau đó kích hoạt Môi trường ảo:

source bin/activate

Kiểm tra phiên bản python của bạn:

$ python --version
Python 3.7.3

Bạn có thể cần phải loại bỏ môi trường ảo trước đó

rm -rf bin

2

Đây có vẻ là một chút quá phức tạp cho Windows. Nếu bạn đang chạy Windows chạy python 3.3 trở lên, bạn có thể sử dụng trình khởi chạy python pyđể thực hiện việc này dễ dàng hơn nhiều. Chỉ cần cài đặt phiên bản python khác nhau, sau đó chạy:

py -[my version] -m venv env

Điều này sẽ tạo ra một môi trường ảo được gọi envtrong thư mục hiện tại của bạn, sử dụng python [my version]. Ví dụ:

py -3.7 -m venv env
./env/Scripts/activate

Điều này tạo ra một môi trường ảo được gọi là envsử dụng python3.7 và kích hoạt nó. Không có đường dẫn hoặc những thứ phức tạp khác cần thiết.


Không nên py -3.7 -m venv envthay thế (cái -mcòn thiếu)?
sinoroc

Đúng, cố định trong bài!.
Cole Smith


1

Đối với Hệ thống Debian (debian 9) vào năm 2019, tôi đã phát hiện ra một giải pháp đơn giản có thể giải quyết vấn đề từ bên trong môi trường ảo.

Giả sử môi trường ảo được tạo thông qua:

python3.7 -m venv myenv

nhưng chỉ có các phiên bản python2python2.7, và bạn cần các tính năng gần đây của python3.7.

Sau đó, chỉ cần chạy lệnh:

(myvenv) $ python3.7 -m venv --upgrade /home/username/path/to/myvenv/

sẽ thêm các gói python3.7 nếu chúng đã có sẵn trên hệ thống của bạn.


1

Đây là một lỗi với virtualenv. Chỉ cần nâng cấp pip của bạn sẽ là sửa chữa.

pip install --upgrade virtualenv


1

Như đã đề cập trong nhiều câu trả lời, sử dụng virtualenv là một giải pháp sạch. Tuy nhiên, một cạm bẫy nhỏ mà mọi người nên chú ý là nếu một bí danh cho trăn được đặt trong bash_aliases như:

python=python3.6

bí danh này cũng sẽ được sử dụng trong môi trường ảo. Vì vậy, trong kịch bản này chạy python -Vbên trong env ảo sẽ luôn xuất ra 3.6bất kể trình thông dịch nào được sử dụng để tạo môi trường:

virtualenv venv --python=pythonX.X

0

Nó hoạt động với tôi trên windows với cài đặt python 2:

  1. Bước 1: Cài đặt phiên bản python 3.
  2. Bước 2: tạo thư mục env cho môi trường ảo.
  3. Bước 3: c: \ Python37 \ python -m venv c: \ path \ to \ env.

Đây là cách tôi tạo môi trường ảo Python 3 trên bản cài đặt python 2 hiện có.


0

Bạn có thể làm điều đó bằng cách làm điều này:

virtualenv -p python3 .

0

Có, bạn chỉ cần cài đặt phiên bản python khác và xác định vị trí của phiên bản python khác trong lệnh của bạn như:

virtualenv / home / payroll / Documents / env -p / usr / bin / python3


0

Dưới đây là hướng dẫn cách tạo môi trường ảo trong thư mục Visual Studio Code: Tôi đã sử dụng Powershell (Chế độ quản trị viên):
1. Tôi tạo thư mục VSCode - "D: \ Code_Python_VE" nơi tôi muốn tạo môi trường ảo.
2. Tiếp theo tôi gõ lệnh - "pip3 install virtualenv". (D: \ Code_Python_VE> pip3 cài đặt virtualenv) 3. D: \ Code_Python_VE> python3 -m venv project_env
4. D: \ Code_Python_VE> project_env \ Sc scripts \ activ.bat
5. D: \ Code_Python_VE thư mục "project_env".
6. Mã D: \ Code_Python_VE>. Điều này sẽ bắt đầu Visual Studio Code. Hãy chắc chắn rằng lệnh là (mã.).
7. Tạo launch.jason với nội dung sau:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "python",
            "request": "launch",
            "name": "Python: Current File (Integrated Terminal 1)",
            "program": "${file}"
        },
        {
            "name": "Python: Current File (Integrated Terminal 2)",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        }
    ]
}

(Vui lòng tìm kiếm cách đi đến cửa sổ Gỡ lỗi và Thêm Cấu hình mới trong Mã VS).

  1. Nhấn F1 trong mã studio Visual và bảng lệnh sẽ mở - Chọn Trình thông dịch Python và chọn môi trường ảo project_env.
  2. Thêm tệp test.txt bằng một bản in câu lệnh ("Hello World").
  3. Chạy chương trình này.
  4. Trong thiết bị đầu cuối Visual Studio Code -
    (project_env) d: \ Code_Python_VE> python -m pip install - up tiến
    Tôi hy vọng điều này sẽ giúp.

-2

UBUNTU 19.04 / Python toàn cầu 3.7.

Điều này làm việc với tôi, cho phép môi trường Python 3.8 sử dụng venv được đề xuất để phát triển python 3.

Cài đặt mô-đun 3,8 và 3,8 venv

$ sudo apt cài đặt python3.8 python3.8-venv ## cộng với bất kỳ mô-đun nào khác bạn cần

Tạo Env ảo của bạn bằng phiên bản python mà bạn muốn trong env đó

$ /usr/bin/python3.8 -m venv python38-env

chuyển sang env ảo của bạn

$ python38-env / bin / kích hoạt

trăn -V = trăn 3,8

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.