Python2和Python3并存
PHP是世界上最好的语言 VS Python是世界上最好的两门语言。
在现在这个时间点Python3已经到Python3.7而且Python2.7到2020年就不再维护。如果我还是对Python3一点都不了解,并且还不打算向Python3靠齐的话,这就不对了。
那项目要从Python2迁移到Python3么?已经有的项目我当然是不希望迁移。新的项目建议能用py3就py3,最好最好向后兼容Python2.7。至于学py2还是py3,新手直接学py3.
在这段时间我的电脑上肯定是py2和py3共存的。我把这个划分成3个阶段。
- 了解py3:py2为主,py3只是装在电脑上,偶尔看到网上一些py3特性的时候会用来验证一下
- 用起来py3:py2还在,但是写一些小项目开始用py3来写,并且不用考虑兼容py2
- 兼容py2:如果你的项目不想只是自己一个人用,考虑下兼容py2
目录
环境
配置一个环境,除了需要安装py2和py3以外,还要cover平时会用到的IPython、pip、pipenv在py2和py3共存时的情况。
我的电脑是mac os10.12.1,mac电脑上自带的python使用/usr/bin/python
,文件安装在/System/Library/Frameworks/Python.framework
。pip的情况如下
➜ python which pip
/usr/local/bin/pip
➜ python pip --version
pip 9.0.1 from /Library/Python/2.7/site-packages (python 2.7)
安装
首先我用homebrew重新安装Python3和Python2。现在默认的python是3.x版本。安装好以后使用brew info python
可以查看到python(py3)和python2都安装在了/usr/local/Cellar
目录下,可运行程序在/usr/local/bin
目录下。
brew install --verbose --debug python
brew install --verbose --debug python2
由于主要py2为主,所以我还是希望在命令行中使用python
时使用新安装的python2;使用python3
时使用新安装的python3。
pip
使用brew命令安装的python2.7和python3.6中都自带pip。
我最开始安装
brew install python
因为/Users/<username>/Library/Logs/Homebrew
的权限问题一直没有安装上pip。 建议安装时候还是带上verbose debug
看下现在的pip和pip3,包被安装在对应的site-packages目录下。
➜ ~ which pip
/usr/local/bin/pip
➜ ~ which pip3
/usr/local/bin/pip3
➜ ~ pip --version
pip 10.0.1 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)
➜ ~ pip3 --version
pip 10.0.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
IPython
IPython是python的交互式shell,替代python自带的shell。可通过pip来安装。
➜ ~ pip install --verbose ipython # python2安装ipython
➜ ~ pip3 install --verbose ipython # python3安装ipyhton
安装后在/usr/local/bin
目录中有ipython
、ipython2
、ipython3
文件。我改了下ipython文件为ipython2文件,这样,和前面保持一致。
pipenv
pip install --user pipenv
安装在$HOME/Library/Python/<vers>/lib
中。[1]
pipenv添加到PAHT中:PATH=/Users/<username>/Library/Python/2.7/bin:$PATH
。
新建的项目还是有py2和py3的。在创建虚拟环境时候区分一下就行了
pipenv install # default
pipenv install --three # 使用python3
总结下最终的效果:
- 想用python2就:
python
、pip
、ipython
、pipenv
照以前一样用 - 需要用pythn3就:
python3
、pip3
、ipython3
、pipenv install --three
这样使用
参考资料:
注[1]:
- pipenv作者建议使用python3安装。我为了保持不特殊说明情况用python2,这里用python2装。
- 为什么要
--user
?因为pipenv需要virtualenv,直接安装会安装到/usr/local/bin/virtualenv
所属用户是<username>
,这样多不好。