繁体   English   中英

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

[英]Use python2.7 in venv where python3 is default python

我的机器上有 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。

安装并运行 Python 3 与 Python 2 同时运行,您需要从软件中心安装(python 2 和 python 3)python ,然后使用此处提供的解决方案创建虚拟环境

如果 python 2.7 在你的系统中并安装了它并且你在 ~/.bashrc 中使用别名 python27 来运行 python 2.7

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

python27 -m virtualenv <path to venv>

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

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

要使 python 安装成为“默认”,您应该通过将所需的 python 版本添加到前面来更改您的PATH ,而不是创建别名。

你可以使用命令

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

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

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

使您想要的 python 版本成为默认值。

您是否正确激活了虚拟环境? 创建 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 后,您应该能够按照描述激活它。

我在我添加的评论和问题描述中解释了

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 版本。

感谢大家的回答和时间。 这有助于我学习新知识。

如果使用pycharm,可以在settings > project > cog symbol下新建一个虚拟环境,下拉菜单:add。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM