[英]Use different Python version with virtualenv
如何為指定版本的 Python 創建虛擬環境?
注意:對於Python 3.3+ ,請參閱下面的 Aelfinn 的回答。
在創建 virtualenv 實例時使用--python
(或短-p
)選項來指定要使用的 Python 可執行文件,例如:
virtualenv --python="/usr/bin/python2.6" "/path/to/new/virtualenv/"
從 Python 3 開始, 文檔建議使用以下方法創建虛擬環境:
python3 -m venv "my_env_name"
請注意, venv
不允許使用其他版本的 Python 創建虛擬環境。 為此,安裝並使用virtualenv
包。
pyvenv
腳本可用於創建虛擬環境:
pyvenv "/path/to/new/virtual/environment"
自 Python 3.6 起已棄用。
當您在共享托管環境中並且需要從源代碼安裝和編譯 Python,然后從您的 Python 版本創建venv
時,這些是您可以遵循的步驟。 對於 Python 2.7.9。 你會按照這些思路做一些事情:
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
虛擬環境
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
自然,這可以適用於您想要復制您工作和部署的確切環境的任何情況。
有一個更簡單的方法,
virtualenv venv --python=python2.7
感謝評論,這僅在您在系統級別安裝了 python2.7 時才有效(例如 /usr/bin/python2.7)。
否則,如果您使用的是自制軟件,則可以使用該路徑為您提供所需的內容。
virtualenv venv --python=/usr/local/bin/python
你可以找到你的python安裝路徑
which python
這也適用於 python 3。
which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3
最終濃縮為:
virtualenv venv -p `which python`
virtualenv venv -p `which python3`
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
在 Windows 下對我來說這有效:
virtualenv --python=c:\Python25\python.exe envname
沒有python.exe
我得到了WindowsError: [Error 5] Access is denied
我安裝了 Python2.7.1 和 virtualenv 1.6.1,我想要 python 2.5.2。
Mac OSX 10.6.8(雪豹):
1)當您執行pip install virtualenv
時, pip 命令與您的某個 python 版本相關聯,並且virtualenv
被安裝到該版本的 python 中。 你可以做
$ which pip
看看那是什么版本的python。 如果你看到類似的東西:
$ which pip
/usr/local/bin/pip
然后做:
$ 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
您可以在輸出中看到 python 版本。
默認情況下,這將是用於您創建的任何新環境的 python 版本。 但是,您可以使用-p flag
指定計算機上安裝的任何 python 版本以在新環境中使用:
$ 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
將在當前目錄中創建一個文件夾,該文件夾將包含 Python 可執行文件,以及可用於安裝其他包的 pip [command] 的副本。
http://docs.python-guide.org/en/latest/dev/virtualenvs/
virtualenv
只是將 python 從您計算機上的某個位置復制到新創建的 my_env/bin/ 目錄中。
2)系統python在/usr/bin
,而我安裝的各種python版本默認安裝到:
/usr/local/bin
3) 我安裝的各種 python 的名稱如python2.7
或python3.2
,我可以使用這些名稱而不是完整路徑。
1)我在讓 virtualenvwrapper 工作時遇到了一些問題。 這就是我最終放入~/.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) -p option
與 virtualenvwrapper 的工作方式不同:我必須指定要在新環境中使用的 python 解釋器的完整路徑(當我不想使用默認的 python 版本時):
$ 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.
與 virtualenv 不同,virtualenvwrapper 將在 $WORKON_HOME 環境變量指定的位置創建環境。 這將您的所有環境保存在一個地方。
[2019 年 11 月] 我需要在基於 Python 3.8 的 Arch Linux 系統上安裝 Python 3.7 環境 (env)。 Python 3.7 不再在系統上,所以我無法降級 Python 來安裝我需要的包。
此外,我想在虛擬環境(venv)中使用該包/Python 3.7。 我就是這樣做的。
下載Python版本源文件:
我從以下位置下載了 Python 3.7.4 源文件
至
/mnt/Vancouver/apps/python_versions/src/Python-3.7.4.tgz
然后我將該存檔(源文件)提取到
/mnt/Vancouver/apps/python_versions/src/Python-3.7.4/
安裝:
[注意:在我的系統環境中,不是 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
檢查已安裝的 Python 版本:
$ 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
如何為特定的 Python 版本創建 venv:
https://docs.python.org/3/tutorial/venv.html
12.2. 創建虛擬環境
用於創建和管理虛擬環境的模塊稱為
venv
。venv
通常會安裝你可用的最新版本的 Python。 如果您的系統上有多個 Python 版本,您可以通過運行 python3 或您想要的任何版本來選擇特定的 Python 版本。要創建虛擬環境,請確定要放置它的目錄,然后將 venv 模塊作為具有目錄路徑的腳本運行:
python3 -m venv tutorial-env
如果
tutorial-env
目錄不存在,這將創建它,並在其中創建包含 Python 解釋器副本、標准庫和各種支持文件的目錄。 ...
創建 Python 3.7 venv [在 Python 3.8 操作 env / 系統上]:
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)
添加到~/.bashrc
:
alias p37='echo " [Python 3.7 venv (source ~/venv/py3.7/bin/activate)]" && source ~/venv/py3.7/bin/activate'
測試 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]
>>>
假設您當前在 virtualenv 中安裝了 python 2.7。 但是要使用python3.2
,您必須使用以下內容進行更新:
$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv
然后通過以下方式激活您的virtualenv :
$ source activate name_of_your_virtualenv
然后在 shell 中執行: python --version
檢查您的版本現在是否已更新。
你應該安裝了那個 Python 版本。 如果你有它,那么基本上,
使用 virtualenv,
virtualenv --python=python3.8 env/place/you/want/to/save/to
帶venv
python3.8 -m venv env/place/you/want/to/save/to
以上示例適用於python3.8,您可以將其更改為具有不同版本的虛擬環境,前提是它們已安裝在您的計算機中。
這兩個命令應該可以正常工作。
virtualenv -p python2 myenv
(對於 python2)
virtualenv -p python3 myenv
(對於 python3)
您可以使用所需的 python 版本調用virtualenv
。 例如:
python3 -m virtualenv venv
或者直接指向您的 virtualenv 路徑。 例如對於窗戶:
c:\Python34\Scripts\virtualenv.exe venv
通過運行:
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.
>>>
可以看到虛擬環境中安裝的python版本
-p
方法效果很好,但您必須記住每次都使用它。 如果您的目標是通常切換到較新版本的 Python,那會很痛苦,而且還會導致錯誤。
您的另一個選擇是設置一個與-p
執行相同操作的環境變量。 通過~/.bashrc
文件或管理登錄會話的環境變量的任何位置進行設置:
export VIRTUALENV_PYTHON=/path/to/desired/version
然后,只要您未在命令行上指定-p
, virtualenv
就會使用它。
在 Mac 上,我使用 pyenv 和 virtualenvwrapper。 我必須創建一個新的 virtualenv。 你需要自制軟件,如果你在 Mac 上,我假設你已經安裝了它,但只是為了好玩:
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}
我也先凍結了我的要求,所以我可以簡單地在新的 virtualenv 中重新安裝:
pip install -r requirements.txt
更簡單的是,通過使用命令替換為您找到 python2:
virtualenv -p $(which python2) <path/to/new/virtualenv/>
或者在使用 virtualenvwrapper 時:
mkvirtualenv -p $(which python2) <env_name>
對於 Mac(High Sierra),在 python3 上安裝 virtualenv 並為 python2 創建一個 virtualenv:
$ python3 -m pip install virtualenv
$ python3 -m virtualenv --python=python2 vp27
$ source vp27/bin/activate
(vp27)$ python --version
Python 2.7.14
這些對於 Windows 來說似乎有點過於復雜。 如果您在 Windows 上運行 python 3.3 或更高版本,則可以使用 python 啟動器py
更輕松地執行此操作。 只需安裝不同的 python 版本,然后運行:
py -[my version] -m venv env
這將使用 python [my version]
在當前目錄中創建一個名為env
的虛擬環境。 舉個例子:
py -3.7 -m venv env
./env/Scripts/activate
這將使用 python3.7 創建一個名為env
的虛擬環境並激活它。 不需要路徑或其他復雜的東西。
正如多個答案中已經提到的,使用virtualenv是一個干凈的解決方案。 然而,每個人都應該知道的一個小陷阱是,如果在bash_aliases中設置了 python 的別名,例如:
python=python3.6
這個別名也將在虛擬環境中使用。 因此,在這種情況下,在虛擬環境中運行python -V
將始終輸出3.6
,而不管使用什么解釋器來創建環境:
virtualenv venv --python=pythonX.X
在窗戶上:
py -3.4x32 -m venv venv34
或者
py -2.6.2 -m venv venv26
這使用py
啟動器,它將為您找到正確的 python 可執行文件(假設您已安裝它)。
我將這個答案用於 Windows
https://stackoverflow.com/a/22793687/15435022
py -3.4 -m venv c:\path\to\wherever\you\want\it
為python3創建環境:
virtualenv --python=/usr/bin/python3 env
激活它:
source env/bin/activate
2020 年底:
使用 virtualenv 的最無縫體驗(附加好處:使用任何可能的 python 版本)將使用 pyenv 及其(捆綁的)pyenv-virtualenv 插件(參見https://realpython.com/intro-to-pyenv/#virtual-環境和 pyenv )
用法: pyenv virtualenv <python_version> <environment_name>
安裝:
curl https://pyenv.run | bash
exec $SHELL
cf https://github.com/pyenv/pyenv-installer
話雖這么說,現在最好的替代方案是Poetry ,而不是使用virtualenv
(和pip
)(與上面指出的pyenv
一起處理不同的 python 版本)。
另一個選擇,因為它由 PyPA( pip
和 PyPI 背后的組織)直接支持,並且自 5 月底以來已重新開始發布(自 2018 年底以來未發布...)將是Pipenv
這適用於我在 Windows 10 中的使用,我有 Python 3.7 並希望在 Python 3.6.6 中為項目降級:
我使用“venv”創建了一個名為“venv”的新環境,我從https://www.python.org/downloads/windows/下載; install "下載 Windows x86-64 可執行安裝程序-" ; 然后我在要創建環境的目錄中使用了以下命令行
>C:\Users\...\Python\Python36\python.exe -m venv venv
最后,我使用命令行激活了環境:
>venv\Scripts\activate.bat
並通過調用檢查 python 版本:
>python --version
Python 3.6.6
在 Linux Ubuntu 21.04(目前是 Python 3.9.5)上,我需要獲得 Python 3.7.8 的 virtualenv。 開始工作的完整步驟:
找到你想要的 Python 版本源,例如 3.7.8 在這里: https ://www.python.org/downloads/release/python-378/
下載 Gzipped 源代碼壓縮包
使用tar zxvf Python-3.7.8.tgz
(如果與 3.7.8 不同,請根據需要使用您的版本號進行修改)
使用以下命令將解壓縮的文件夾復制到 /usr/bin: sudo cp -r Python-3.7.8 /usr/bin
cd /usr/bin/Python-3.7.8/
如果您想查看到目前為止的內容,請檢查內容: ls
sudo time ./configure
sudo time make
time sudo make install
time make clean
檢查你的 python 是如何設置和報告的:
which python
python --version
應該與您的主要安裝有關(對我來說是 Python 3.9.5)
要檢查您的新安裝:
which python 3.7
python3.7 --version
應該與您的 3.7.8 安裝有關
如果要運行它進行檢查,請執行以下操作:
python3.7
exit()
安裝 venv:
sudo apt install venv
要創建一個 venv(可能在您的倉庫中,如果有,請將 .venv 添加到 .gitignore):
python3.7 -m venv .venv
要激活您的 venv:
source .venv/bin/activate
檢查您的版本:
python --version
是的,上述答案是正確的,並且在基於 Unix 的系統(如Linux和MAC OS X )上運行良好。
我嘗試使用以下命令為Python2和Python3創建virtualenv 。
在這里,我分別使用venv2和venv3作為Python2和Python3的名稱。
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$
檢查 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$
它對我有用
sudo apt-get install python3-minimal
virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
virtualenv -p python3 myenv
這是 virtualenv 的一個錯誤。 只需升級您的點子就可以解決問題。
pip install --upgrade virtualenv
我使用 Windows,所以我應該在 pthon 路徑上使用.exe
virtualenv -p=C:\Python27\python2.exe <envname>
對於 2019 年的 Debian(debian 9)系統,我發現了一個簡單的解決方案,可以從虛擬環境中解決問題。
假設虛擬環境是通過以下方式創建的:
python3.7 -m venv myenv
但只有python2
和python2.7
的版本,你需要 python3.7 的最新功能。
然后,只需運行命令:
(myvenv) $ python3.7 -m venv --upgrade /home/username/path/to/myvenv/
如果您的系統上已經有 python3.7 包,將添加它們。
它在安裝了 python 2 的 Windows 上對我有用:
這就是我在現有的 python 2 安裝上創建 Python 3 虛擬環境的方式。
是的,您只需要安裝其他版本的 python,並在您的命令中定義其他版本的 python 的位置,例如:
virtualenv /home/payroll/Documents/env -p /usr/bin/python3
以下是如何在 Visual Studio Code 文件夾中創建虛擬環境的分步說明: 我使用了 Powershell(管理員模式):
1. 我創建了一個 VSCode 文件夾 - “D:\Code_Python_VE”,我想在其中創建虛擬環境。
2.接下來我輸入命令-“pip3 install virtualenv”。 (D:\Code_Python_VE> pip3 install virtualenv) 3. D:\Code_Python_VE> python3 -m venv project_env
4. D:\Code_Python_VE>project_env\Scripts\activate.bat
5. D:\Code_Python_VE> ls - 這將列出一個新目錄“project_env”。
6. D:\Code_Python_VE> 代碼。 這將啟動 Visual Studio Code。 確保命令是(代碼。)。
7. 創建launch.jason,內容如下:
{
// 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"
}
]
}
(請搜索如何進入調試窗口並在 VS Code 中添加新配置)。
UBUNTU 19.04 / 全球 Python 3.7。
這對我有用,使用推薦的 venv 啟用 Python 3.8 環境以進行 python 3 開發。
安裝 3.8 和 3.8 venv 模塊: $ sudo apt install python3.8 python3.8-venv
加上您需要的任何其他模塊
使用您想要在該環境中使用的 python 版本創建您的虛擬環境
$ /usr/bin/python3.8 -m venv python38-env
切換到您的虛擬環境
$ source python38-env/bin/activate
python -V = python 3.8
令人驚訝的是,到目前為止還沒有人提到conda
。 我發現這比這里提到的其他方法要簡單得多。 假設我有 python 3.9 和 python 2.7,我正在處理的項目是 python 3.5.4,我可以簡單地使用 conda 命令為 3.5.4 創建隔離的虛擬環境,而無需下載任何其他內容。
要首先查看可用 python 版本的列表,請使用命令
conda search "^python$"
為python版本xyz創建虛擬環境,使用命令
conda create -n yourenvname python=xyz
激活venv
conda activate yourenvname
停用
conda deactivate
要在完成后刪除虛擬環境,請使用命令
conda remove -n yourenvname --all
您可以這樣做:
virtualenv -p python3 .
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt 更新
sudo apt install python_version(例如:sudo apt install python3.8)
python_version -m venv env(例如:python3.8 -m venv env)
. 環境/bin/激活
上述步驟將解決您的 python 版本的 env 問題。
這個問題的答案應該不會那么復雜...
長話短說:
在系統上安裝盡可能多的 python 版本並使用:
/c/path/to/any/version/of/python -m venv my_venv
============================================
我使用 venv 來安裝虛擬環境
python -m venv <where/to/and/name_of_venv>
如果你嘗試which python
你會看到你指的是哪個 python,當你說“python”時。 例如,對我來說是:
which python
結果:/c/Program Files/Python36/python
所以,現在你有了答案。 您可以在您的系統上安裝任何版本的 python 並同時擁有多個,所以。 例如,我在此目錄中安裝了 Python3:7:“C.\Program Files\Python37”,因此,現在我不使用“python”,而是通過/c/Program\ Files/Python37/python
指定哪個 python:
/c/Program\ Files/Python37/python -m venv my_venv
(不要忘記逃避路徑中的空間)
而已!
假設我想使用 python 3.8 而我正在使用 MacOS。
brew install python@3.8
然后,
python3.8 -m venv venv
簡單的:
Linux
virtualenv venv --python=/usr/bin/python3.9
視窗
virtualenv venv --python=C:\Users\username\AppData\Local\Programs\Python\Python\python.exe
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.