我有一个使用 python 2.5.4 运行的 Debian 系统。我正确安装了 virtualenv,一切正常。是否有可能我可以将 virtualenv 与不同版本的 Python 一起使用?
我编译了 Python 2.6.2 并希望将它与一些 virtualenv 一起使用。覆盖二进制文件就足够了吗?还是我必须改变图书馆的一些东西?
我有一个使用 python 2.5.4 运行的 Debian 系统。我正确安装了 virtualenv,一切正常。是否有可能我可以将 virtualenv 与不同版本的 Python 一起使用?
我编译了 Python 2.6.2 并希望将它与一些 virtualenv 一起使用。覆盖二进制文件就足够了吗?还是我必须改变图书馆的一些东西?
只需在创建 virtualenv 实例时使用--python
(或 short -p
) 选项来指定要使用的 Python 可执行文件,例如:
virtualenv --python=/usr/bin/python2.6 <path/to/new/virtualenv/>
注意对于Python 3.3或更高版本,请参阅下面的 Aelfinn答案。
从 Python 3 开始,Python 文档建议使用以下命令创建虚拟环境:
python3 -m venv <myenvname>
请注意,venv
不允许使用其他版本的 Python 创建虚拟环境。为此,安装并使用virtualenv
package。
该pyvenv
脚本可用于创建虚拟环境
pyvenv /path/to/new/virtual/environment
但它自 Python 3.6 以来已被弃用。
当您在共享托管环境中并且需要从源代码安装和编译 Python,然后venv
从您的 Python 版本创建时,这些是您可以遵循的步骤。对于 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
,我安装了带有 virtualenv 1.6.1 的 Python2.7.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 版本。但是,您可以指定计算机上安装的任何版本的 python 以在新环境中使用-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
将在当前目录中创建一个文件夹,该文件夹将包含 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
or 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
然后执行:python --version
在 shell 中检查您的版本现在是否已更新。
这两个命令应该可以正常工作。
virtualenv -p python2 myenv
(对于python2)
virtualenv -p python3 myenv
(对于python3)
你可以virtualenv
用你想要的python版本调用。例如:
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版本
你应该安装了那个 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,您可以将其更改为具有不同版本的虚拟环境,前提是它们已安装在您的计算机中。
该-p
方法效果很好,但您必须记住每次都使用它。如果您的目标是通常切换到较新版本的 Python,那会很痛苦,而且还会导致错误。
您的另一个选择是设置一个与-p
. 通过您的~/.bashrc
文件或管理登录会话的环境变量的任何位置进行设置:
export VIRTUALENV_PYTHON=/path/to/desired/version
然后virtualenv
将在您未-p
在命令行上指定的任何时候使用它。
在 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
在窗户上:
py -3.4x32 -m venv venv34
或者
py -2.6.2 -m venv venv26
这使用py
启动器,它将为您找到正确的 python 可执行文件(假设您已安装它)。
这些对于 Windows 来说似乎有点过于复杂。如果您在 Windows 上运行 python 3.3 或更高版本,则可以使用 python 启动器py
更轻松地执行此操作。只需安装不同的 python 版本,然后运行:
py -[my version] -m venv env
这将使用 python 创建一个env
在当前目录中调用的虚拟环境[my version]
。举个例子:
py -3.7 -m venv env
./env/Scripts/activate
这将创建一个env
使用 python3.7 调用的虚拟环境并激活它。不需要路径或其他复杂的东西。
为python3创建环境:
virtualenv --python=/usr/bin/python3 env
激活它:
source env/bin/activate
正如多个答案中已经提到的,使用virtualenv是一个干净的解决方案。然而,每个人都应该知道的一个小陷阱是,如果在bash_aliases中设置了 python 的别名,例如:
python=python3.6
这个别名也将在虚拟环境中使用。因此,在这种情况下,无论使用什么解释器创建环境,python -V
在虚拟环境中运行都会始终输出:3.6
virtualenv venv --python=pythonX.X
这适用于我在 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
蟒蛇 3.6.6
是的,上述答案是正确的,并且在基于 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$
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
话虽如此,现在最好的替代方法是使用virtualenv
(and pip
)代替Poetry(连同pyenv
上面指出的,以处理不同的 python 版本)。
另一个选择,因为它由 PyPA(背后的组织pip
和 PyPI)直接支持,并且自 5 月底以来已重新开始发布(在此之前自 2018 年底以来没有发布......)将是Pipenv
我将这个答案用于 Windows
https://stackoverflow.com/a/22793687/15435022
py -3.4 -m venv c:\path\to\wherever\you\want\it
它对我有用
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
对于 2019 年的 Debian(debian 9)系统,我发现了一个简单的解决方案,可以从虚拟环境中解决问题。
假设虚拟环境是通过以下方式创建的:
python3.7 -m venv myenv
但是只有and的版本,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
我使用 Windows,所以我应该.exe
在 pthon 路径上使用
virtualenv -p=C:\Python27\python2.exe <envname>
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=x.y.z
激活venv
conda activate yourenvname
停用
conda deactivate
要在完成后删除虚拟环境,请使用命令
conda remove -n yourenvname --all
在 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