我的机器上有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。
答案 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将为您完成工作。