1408

我有一个使用 python 2.5.4 运行的 Debian 系统。我正确安装了 virtualenv,一切正常。是否有可能我可以将 virtualenv 与不同版本的 Python 一起使用?

我编译了 Python 2.6.2 并希望将它与一些 virtualenv 一起使用。覆盖二进制文件就足够了吗?还是我必须改变图书馆的一些东西?

4

36 回答 36

1811

只需在创建 virtualenv 实例时使用--python(或 short -p) 选项来指定要使用的 Python 可执行文件,例如:

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

注意对于Python 3.3或更高版本,请参阅下面的 Aelfinn答案

于 2009-10-07T21:33:12.773 回答
451

从 Python 3 开始,Python 文档建议使用以下命令创建虚拟环境:

python3 -m venv <myenvname>

请注意,venv不允许使用其他版本的 Python 创建虚拟环境。为此,安装并使用virtualenv package


过时的信息

pyvenv 脚本可用于创建虚拟环境

pyvenv /path/to/new/virtual/environment

但它自 Python 3.6 以来已被弃用。

于 2016-09-26T22:46:36.520 回答
205

当您在共享托管环境中并且需要从源代码安装和编译 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   

自然,这可以适用于您想要复制您工作和部署的确切环境的任何情况。

于 2012-07-02T22:17:14.797 回答
148

有一个更简单的方法,

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`
于 2016-11-01T11:59:31.997 回答
112
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
于 2009-11-04T15:15:15.670 回答
78

在 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。

于 2011-07-31T21:04:32.403 回答
40

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.7or python3.2,我可以使用这些名称而不是完整路径。

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

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 optionvirtualenvwrapper的工作方式不同:我必须指定要在新环境中使用的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 环境变量指定的位置创建环境。这将您的所有环境保存在一个地方。

于 2015-01-15T20:43:25.700 回答
27

[2019 年 11 月] 我需要在基于 Python 3.8 的 Arch Linux 系统上安装 Python 3.7 环境 (env)。Python 3.7 不再在系统上,所以我无法降级 Python 来安装我需要的包。

此外,我想在虚拟环境(venv)中使用该包/Python 3.7。我就是这样做的。


下载Python版本源文件:

我从以下位置下载了 Python 3.7.4 源文件

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

/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] 
>>>
于 2019-11-20T22:50:32.510 回答
26

假设您当前在 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 中检查您的版本现在是否已更新。

于 2013-12-30T05:51:49.197 回答
23

这两个命令应该可以正常工作。

virtualenv -p python2 myenv (对于python2)

virtualenv -p python3 myenv (对于python3)

于 2018-07-05T10:03:25.820 回答
18

你可以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版本

于 2015-12-12T23:11:12.070 回答
17

你应该安装了那个 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,您可以将其更改为具有不同版本的虚拟环境,前提是它们已安装在您的计算机中。

于 2021-01-20T22:04:17.403 回答
13

-p方法效果很好,但您必须记住每次都使用它。如果您的目标是通常切换到较新版本的 Python,那会很痛苦,而且还会导致错误。

您的另一个选择是设置一个与-p. 通过您的~/.bashrc文件或管理登录会话的环境变量的任何位置进行设置:

export VIRTUALENV_PYTHON=/path/to/desired/version

然后virtualenv将在您未-p在命令行上指定的任何时候使用它。

于 2016-08-05T20:57:44.920 回答
9

在 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
于 2015-09-02T22:04:10.270 回答
8

更简单的是,通过使用命令替换为您找到 python2:

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

或者在使用 virtualenvwrapper 时:

mkvirtualenv -p $(which python2) <env_name>

于 2016-09-19T13:28:50.670 回答
7

对于 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
于 2018-04-24T00:30:05.810 回答
5

在窗户上:

py -3.4x32 -m venv venv34

或者

py -2.6.2 -m venv venv26

这使用py启动器,它将为您找到正确的 python 可执行文件(假设您已安装它)。

于 2018-04-17T23:22:22.433 回答
5

这些对于 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 调用的虚拟环境并激活它。不需要路径或其他复杂的东西。

于 2020-03-07T19:31:34.577 回答
4

在 linux 的 windows 子系统中:

  1. 为python3创建环境:

    virtualenv --python=/usr/bin/python3 env
    
  2. 激活它:

    source env/bin/activate
    
于 2017-05-26T11:45:41.307 回答
4

我使用pyenv来管理我的 python 版本。

pyenv install 3.7.3
pyenv local 3.7.3

检查你的python版本:

$ python --version
Python 3.7.3

使用venv创建虚拟环境:

python -m venv .

然后激活虚拟环境:

source bin/activate

检查你的python版本:

$ python --version
Python 3.7.3

您可能需要删除以前的虚拟环境

rm -rf bin
于 2019-08-16T16:37:29.187 回答
4

正如多个答案中已经提到的,使用virtualenv是一个干净的解决方案。然而,每个人都应该知道的一个小陷阱是,如果在bash_aliases中设置了 python 的别名,例如:

python=python3.6

这个别名也将在虚拟环境中使用。因此,在这种情况下,无论使用什么解释器创建环境,python -V在虚拟环境中运行都会始终输出:3.6

virtualenv venv --python=pythonX.X
于 2020-05-13T13:25:53.470 回答
4

这适用于我在 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

于 2020-12-21T00:25:52.127 回答
3

的,上述答案是正确的,并且在基于 Unix 的系统(如LinuxMAC OS X )上运行良好。

我尝试使用以下命令为Python2Python3创建virtualenv 。

在这里,我分别使用venv2venv3作为Python2Python3的名称。

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$ 
于 2017-12-16T08:17:12.523 回答
3

2020 年底:

使用 virtualenv 的最无缝体验(附加好处:使用任何可能的 python 版本)将使用 pyenv 及其(捆绑的)pyenv-virtualenv 插件(参见https://realpython.com/intro-to-pyenv/#virtual-环境和 pyenv )

用法:pyenv virtualenv <python_version> <environment_name>

安装:

cf https://github.com/pyenv/pyenv-installer

话虽如此,现在最好的替代方法是使用virtualenv(and pip)代替Poetry(连同pyenv上面指出的,以处理不同的 python 版本)。

另一个选择,因为它由 PyPA(背后的组织pip和 PyPI)直接支持,并且自 5 月底以来已重新开始发布(在此之前自 2018 年底以来没有发布......)将是Pipenv

于 2020-12-01T11:56:33.750 回答
3

我将这个答案用于 Windows

https://stackoverflow.com/a/22793687/15435022

py -3.4 -m venv c:\path\to\wherever\you\want\it
于 2021-04-26T01:19:50.473 回答
2

它对我有用

sudo apt-get install python3-minimal

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
于 2016-06-03T06:53:41.993 回答
2
virtualenv -p python3 myenv

链接到创建 virtualenv

于 2018-07-03T08:51:50.427 回答
2

这是 virtualenv 的一个错误。只需升级您的点子就可以解决问题。

pip install --upgrade virtualenv

于 2019-04-04T09:19:57.437 回答
1

对于 2019 年的 Debian(debian 9)系统,我发现了一个简单的解决方案,可以从虚拟环境中解决问题。

假设虚拟环境是通过以下方式创建的:

python3.7 -m venv myenv

但是只有and的版本,python2需要python2.7python3.7的最新特性。

然后,只需运行命令:

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

如果您的系统上已经有 python3.7 包,将添加它们。

于 2019-02-23T21:45:56.380 回答
1

它在安装了 python 2 的 Windows 上对我有用:

  1. 第 1 步:安装 python 3 版本。
  2. 第二步:为虚拟环境创建一个env文件夹。
  3. 第 3 步:c:\Python37\python -m venv c:\path\to\env。

这就是我在现有的 python 2 安装上创建 Python 3 虚拟环境的方式。

于 2019-06-19T10:14:16.607 回答
1

是的,您只需要安装其他版本的 python,并在您的命令中定义其他版本的 python 的位置,例如:

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

于 2019-07-18T05:24:17.517 回答
1

下面是如何在 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 中添加新配置)。

  1. 在 Visual Studio 代码中按 F1,命令托盘将打开 - 选择 Python Interpreter 并选择虚拟环境 project_env。
  2. 添加带有一条语句 print("Hello World") 的 test.py 文件。
  3. 运行这个程序。
  4. 在 Visual Studio Code 终端 -
    (project_env) d:\Code_Python_VE>python -m pip install --upgrade
    我希望这会有所帮助。
于 2019-09-10T02:39:35.610 回答
1

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
于 2019-10-22T03:42:18.443 回答
1

我使用 Windows,所以我应该.exe在 pthon 路径上使用

virtualenv -p=C:\Python27\python2.exe <envname>
于 2020-11-15T16:00:59.023 回答
1

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

于 2020-11-30T15:37:44.363 回答
1

在 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
于 2021-07-30T10:03:45.540 回答