在venv中使用python2.7,其中python3是默认python

时间:2019-02-20 08:47:08

标签: python python-3.x python-2.7 ubuntu virtualenv

我的机器上有python2.7,python3.7,python3.6。我仍然不确定如何管理和查看所有三个python版本的位置。

当前,我只输入版本名称的python来打开该终端或运行脚本。

我通过在~/.bashrc中使用别名来实现了python3.6的默认设置。

我已经使用python3.6安装了virtualenv,因此每当默认情况下创建venc时,都会在其中安装python3.6。

我尝试用python2.7创建venv-

virtualenv -p /usr/bin/python2.7 /Users/karim/Documents/venv2.7

但是在此venv2.7中,当我看到python版本时,它也会给出3.6。当我在终端中输入python2.7时,它将打开python2.7。

我可以为虚拟环境中的python2.7做别名,但是我怀疑是否还会在venv之外创建python2.7默认值。

  1. 如何使用默认的python2.7创建虚拟环境?
  2. 您能向我介绍解释如何管理多个python版本,从一个版本切换到另一个版本,查看位置的文章吗?

我确实检查了所有SO线程,但是没有文章帮助我在具有python3.6默认值的系统中使用python2.7创建venv。

5 个答案:

答案 0 :(得分:2)

  

我通过〜/ .bashrc中的别名做了python3.6的默认设置

这就是问题的根源。如果我正确理解,您已经为python创建了别名,这将导致系统不为您的python版本在PATH中搜索,而是使用别名。使用virtualenv时,此行为不会改变,因为激活它们会改变您的PATH,但别名仍会阻止使用其他python版本。

要将“ python”安装设为“默认”,应在前面添加所需的python版本,而不要使用别名来更改PATH

您可以使用命令

which python3   #python version 3x
which pyhton27  #python version 2.7
which python    # "default" python

检查您的python安装位置,然后添加一行

export PATH="<Directory of desired python version>:$PATH"

将您所需的python版本设置为默认。

答案 1 :(得分:1)

Install and run Python 3 at the same time than Python 2开始,您需要从软件中心安装(python 2和python 3)python ,然后使用此处提供的解决方案创建虚拟环境

如果系统中已安装并安装了python 2.7,并且已在〜/ .bashrc中使用别名python27来运行python 2.7

然后您可以创建一个虚拟环境

python27 -m virtualenv <path to venv>

答案 2 :(得分:1)

您是否正确激活了虚拟环境?创建virtualenv之后,您应该发出命令

source /Users/karim/Documents/venv2.7/bin/activate

更改您的环境,因此python命令引用virtualenv中的解释器。记住,virtualenv与您当前的工作目录无关...

您使用的virtualenv是否可能与错误的Python二进制文件相关联?我的系统上有很多Python,包括 / usr / local / bin 中的Python3.7和Python 2.7:

fathead:~ sholden$ ls -l /usr/local/bin/python*
lrwxr-xr-x  1 sholden  staff   38  6 Dec 12:26 /usr/local/bin/python@ -> ../Cellar/python@2/2.7.15_1/bin/python
lrwxr-xr-x  1 sholden  staff   38  6 Dec 12:34 /usr/local/bin/python-build@ -> ../Cellar/pyenv/1.2.8/bin/python-build
lrwxr-xr-x  1 sholden  staff   45  6 Dec 12:26 /usr/local/bin/python-config@ -> ../Cellar/python@2/2.7.15_1/bin/python-config
lrwxr-xr-x  1 sholden  staff   39  6 Dec 12:26 /usr/local/bin/python2@ -> ../Cellar/python@2/2.7.15_1/bin/python2
lrwxr-xr-x  1 sholden  staff   46  6 Dec 12:26 /usr/local/bin/python2-config@ -> ../Cellar/python@2/2.7.15_1/bin/python2-config
lrwxr-xr-x  1 sholden  staff   41  6 Dec 12:26 /usr/local/bin/python2.7@ -> ../Cellar/python@2/2.7.15_1/bin/python2.7
lrwxr-xr-x  1 sholden  staff   48  6 Dec 12:26 /usr/local/bin/python2.7-config@ -> ../Cellar/python@2/2.7.15_1/bin/python2.7-config
lrwxr-xr-x  1 sholden  staff   34  6 Dec 12:22 /usr/local/bin/python3@ -> ../Cellar/python/3.7.1/bin/python3
lrwxr-xr-x  1 sholden  staff   41  6 Dec 12:22 /usr/local/bin/python3-config@ -> ../Cellar/python/3.7.1/bin/python3-config
lrwxr-xr-x  1 sholden  staff   36  6 Dec 12:22 /usr/local/bin/python3.7@ -> ../Cellar/python/3.7.1/bin/python3.7
lrwxr-xr-x  1 sholden  staff   43  6 Dec 12:22 /usr/local/bin/python3.7-config@ -> ../Cellar/python/3.7.1/bin/python3.7-config
lrwxr-xr-x  1 sholden  staff   37  6 Dec 12:22 /usr/local/bin/python3.7m@ -> ../Cellar/python/3.7.1/bin/python3.7m
lrwxr-xr-x  1 sholden  staff   44  6 Dec 12:22 /usr/local/bin/python3.7m-config@ -> ../Cellar/python/3.7.1/bin/python3.7m-config
lrwxr-xr-x  1 sholden  staff   39  6 Dec 12:26 /usr/local/bin/pythonw@ -> ../Cellar/python@2/2.7.15_1/bin/pythonw
lrwxr-xr-x  1 sholden  staff   40  6 Dec 12:26 /usr/local/bin/pythonw2@ -> ../Cellar/python@2/2.7.15_1/bin/pythonw2
lrwxr-xr-x  1 sholden  staff   42  6 Dec 12:26 /usr/local/bin/pythonw2.7@ -> ../Cellar/python@2/2.7.15_1/bin/pythonw2.7
-rwxr-xr-x@ 1 sholden  staff  230 25 Sep  2017 /usr/local/bin/pythonz*

which(在MacOS上也是type),它告诉您命令与哪个可执行文件相关联。我确认我使用的是正确的python3.7

fathead:~ sholden$ which python3.7
/usr/local/bin/python3.7

为确保使用正确的Python virtualenv,我使用Python二进制文件执行该程序:

fathead:~ sholden$ python3.7 -m virtualenv -p /usr/local/bin/python2.7 venv2.7
Running virtualenv with interpreter /usr/local/bin/python2.7
New python executable in /Users/sholden/venv2.7/bin/python2.7
Also creating executable in /Users/sholden/venv2.7/bin/python
Installing setuptools, pip, wheel...
done.

结果可能是您的Python 3.7没有安装virtualenv。如果是这样,请使用

进行安装
fathead:~ sholden$ python3.7 -m pip install virtualenv
Looking in indexes: https://pypi.org/simple, https://pypi.python.org/simple
Collecting virtualenv
  Downloading https://files.pythonhosted.org/packages/7e/1b/6c00d57127608793e16e8b7f813e64d58a1938505c42fe190d1386ab41e1/virtualenv-16.4.0-py2.py3-none-any.whl (2.0MB)
    100% |████████████████████████████████| 2.0MB 3.4MB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.4.0

创建virtualenv之后,您应该能够按照说明激活它。

答案 3 :(得分:0)

我对自己添加的评论和问题描述表示敬意

alias python=python3.6

bashrc

并尝试创建python2.7虚拟环境,但仍在其中打开3.6。

没有人谈论bash_profile文件。

在其他一些文章中,在查看pyenv时,我看到他们考虑使用bash_profile作为别名。我突然检查了我的,然后

alias python=python3.6

在那里。这就是为什么它也在python2.7虚拟环境中采用python3.6的原因。

我注释掉了这个别名,那么它就不会在全球范围内使用python 3.6。

要注意的重要一点是-更改别名并想查看其效果,打开新的选项卡或终端并在此处进行测试。如果您在旧的运行虚拟环境中尝试,则可能仅显示旧的python版本。

感谢大家的回答和时间。那帮助我学习新知识。

答案 4 :(得分:0)

如果使用pycharm,则可以在设置>项目>齿轮符号,下拉菜单:添加下创建新的虚拟环境。

在这里您可以指定哪个是您的基本python解释器,将其指向python3或python2的安装位置,而pycharm将为您完成工作。