PHP是世界上最好的语言 VS Python是世界上最好的两门语言。


在现在这个时间点Python3已经到Python3.7而且Python2.7到2020年就不再维护。如果我还是对Python3一点都不了解,并且还不打算向Python3靠齐的话,这就不对了。

那项目要从Python2迁移到Python3么?已经有的项目我当然是不希望迁移。新的项目建议能用py3就py3,最好最好向后兼容Python2.7。至于学py2还是py3,新手直接学py3.

在这段时间我的电脑上肯定是py2和py3共存的。我把这个划分成3个阶段。

  1. 了解py3:py2为主,py3只是装在电脑上,偶尔看到网上一些py3特性的时候会用来验证一下
  2. 用起来py3:py2还在,但是写一些小项目开始用py3来写,并且不用考虑兼容py2
  3. 兼容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。

mac-python-2-3-path

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目录中有ipythonipython2ipython3文件。我改了下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

总结下最终的效果:

  1. 想用python2就:pythonpipipythonpipenv照以前一样用
  2. 需要用pythn3就:python3pip3ipython3pipenv install --three这样使用

参考资料:


注[1]:

  1. pipenv作者建议使用python3安装。我为了保持不特殊说明情况用python2,这里用python2装。
  2. 为什么要--user?因为pipenv需要virtualenv,直接安装会安装到/usr/local/bin/virtualenv所属用户是<username>,这样多不好。