[英]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 默认值。
我真的检查了所有 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.