python IDE介绍 & 环境搭建

Python2.x VS Python3.x

为什么会有Python3.x

相信但凡接触过python语言的朋友在接触之初会有“到底用python2还是python3?”的纠结。其实我也有这方面的疑问,为什么python的核心团队不能统一一下呢?非要搞个2.x和3.x,而且3.x还不能向下兼容,这中操作让曾经已经用python2.x编写完成的项目情何以堪,还要费神费力去升级成python3.x,到底是什么因素导致必须要重构python核心内容呢?
通过多方调查,终于在Python的核心成员Brett Cannon的文章中略知其中一二。首先,我们先来看以下下面这个字符串表示什么意思?

1
'abcd'

一目了然,代表由字母’a’、’b’、’c’、’c’组成的字符串,但是,如果你是个python2的使用者,你也可能会说代表ASCII码对应的数值97、98、99、100,至此,大家就会看出问题了,那在python2.x中,字符串默认是以ASCII码的形式呈现的,这样的设计就会产生我们上面这样的歧义。正如python之禅中所说”there should be one – and preferably only one – obvious way to do it”,对于python的代码,应该做到一种呈现只对应一种可能,而上述例子中显然就违背了这样的原则。而这种歧义的产生,不单单是违背了语言的设计初衷,更严重的是这种歧义会在程序的开发中让人抓狂,因为对于字符串而言,开发者必须时刻清楚的知道它代表的到底是字符串还是二进制的数据,否则对于大型程序而言,后果不堪设想。
相信上面的内容会让大家清楚Python2.x所存在的重大缺陷,但是我们的问题依然没有得到很好的回答,我们还会抱有疑问“那为什么不在最开始设计的时候就避免出现这种缺陷呢?一定要在之后再做这种不兼容的修复?”,这就要回到python的诞生了,Guido于1989年12月开始对Python进行编码,并于1991年2月首次以开源形式发布。而Unicode标准的第一卷是在1991年10月发布的,这说明python在设计之初并没有所谓的unicode和ASCII编码的问题,但是随着python的应用程度越来越广泛,ASCII码已经不能满足其需要,而且unicode编码的应用和推广也越来越广泛,python2的缺陷也就显得越来越不可调和,最终导致核心团队必须将其升级来修复这个致命的问题。
多说一句,针对为什么python3不向下兼容的问题,Brett Cannon是这样说的,python的核心团队在设计推广python3的时候以为python社区会针对python2进行bugfix,同时转到python3,但是事实并未如此,核心团队也吃一堑长一智,并保证今后不会再有类似的不可兼容的更新升级了。

官方对于Python2.x和Python3.x的总结

In summary : Python 2.x is legacy, Python 3.x is the present and future of the language Python 3.0 was released in 2008. The final 2.x version 2.7 release came out in mid-2010, with a statement of extended support for this end-of-life release. The 2.x branch will see no new major releases after that. 3.x is under active development and has already seen over five years of stable releases, including version 3.3 in 2012, 3.4 in 2014, and 3.5 in 2015. This means that all recent standard library improvements, for example, are only available by default in Python 3.x.

Guido van Rossum (the original creator of the Python language) decided to clean up Python 2.x properly, with less regard for backwards compatibility than is the case for new releases in the 2.x range. The most drastic improvement is the better Unicode support (with all text strings being Unicode by default) as well as saner bytes/Unicode separation.

Besides, several aspects of the core language (such as print and exec being statements, integers using floor division) have been adjusted to be easier for newcomers to learn and to be more consistent with the rest of the language, and old cruft has been removed (for example, all classes are now new-style, “range()” returns a memory efficient iterable, not a list as in 2.x).


Python IDE介绍

Pycharm

http://www.jetbrains.com/pycharm/download/

Pycharm是由JetBrains公司推出的一款专门针对python开发者的IDE,秉承JetBrains的一贯风格,Pycharm具有调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制等基本功能。同时Pycharm对于Django、Flask等常用Web框架也做到了很好的支持。需要重点提出的是Pycharm还支持IronPython解释器。

Sublime

https://www.sublimetext.com/3

‘A sophisticated text editor for code, markup and prose.’这是Sublime对自己的定位,不得不说sublime的强大、轻量和便捷。相比Pycharm等其他IDE的庞大,sublime作为一种“记事本”类型的IDE,深受追求简洁的开发者的热爱,同时轻量并不代表功能简单,其拥有的各种插件也是没有找不到,只有想不到。相信只要用过sublime的人就一定不会舍弃他。

Visual Studio Code

https://code.visualstudio.com/

VS code也是一款极为优秀的IDE。这款IDE拥有丰富的python扩展工具以便开发者可以更高效的进行项目的开发,包括代码静态分析语法自动不全、科学计算工具,与Jupyter 等工具的集成,重构,单元测试,调试等等。

Eclipse + Pydev

https://www.eclipse.org/ide/

使用这种搭配的开发者基本上已经是个经验丰富的developer了,或者更明确的说很可能是一名Java开发老手,Eclipse这款IDE更广泛的被众多Java开发者所使用,如果已经习惯了Eclipse的操作,可以配以Pydev进行python项目的开发,可以在Eclipse中点击Help→Install new Software,添加pydev的安装地址:http://pydev.org/updates/,获取python的相关套件。具体操作方法请自行查阅,不过多赘述。

其他

当然python作为一种世界的编程语言,更何况现在的发展势头越来越火,IDE作为方便开发者的工具更是必不可少,以上只是介绍了极为有限的几款比较热门的python开发IDE,更多的python开发IDE请参阅:https://wiki.python.org/moin/PythonEditors


Python开发环境搭建

两种python虚拟环境工具介绍

virtualenv

https://virtualenv.pypa.io/en/latest/#

  • 基本介绍
    virtualenv是用于创建隔离的Python环境,以达到不同的项目环境互不影响的目的。

  • virtualenv安装与使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1、pip安装virtualenv
>>> pip install virtualenv

2、验证安装是否成功
>>> virtualenv --version

3、为项目创建隔离的python
>>> cd python_project
>>> virtualenv python_project_env # 这样是使用默认python解释器创建出来的项目

4、也可以指定python解释器创建项目
>>> virtualenv -p /usr/bin/python3.7 python3_project_env

5、以上就完成了python虚拟环境的创建,该环境是一个独立的python运行环境,我们在需要使用该环境时可以将其激活
>>> source python_project_env/bin/activate

6、退出虚拟环境
>>> deactivate

pipenv

https://pypi.org/project/pipenv/

  • 基本介绍
    pipenv 是 Pipfile 、requests 作者 Kenneth Reitz 写的一个命令行工具,主要包含了Pipfile、pip、click、requests和virtualenv。Pipfile和pipenv本来都是Kenneth Reitz的个人项目,后来贡献给了pypa组织。Pipfile是社区拟定的依赖管理文件,用于替代过于简陋的 requirements.txt 文件。
    Pipfile的基本理念是:Pipfile 文件是 TOML 格式而不是 requirements.txt 这样的纯文本。一个项目对应一个 Pipfile,支持开发环境与正式环境区分。默认提供 default 和 development 区分。提供版本锁支持,存为 Pipfile.lock。

  • pipenv安装与使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1、pip安装pipenv
>>> pip install pipenv

2、验证安装是否成功
>>> pipenv --version

3、切换到项目目录
>>> cd python_project

4、创建虚拟环境,可以指定用python2 或者 python3作为当前虚拟环境的python版本
>>> pipenv --two
>>> pipenv --three
>>> pipenv --python 3.7 # 也可以指定Python版本来创建虚拟环境

4、激活当前虚拟环境
>>> pipenv shell

5、在虚拟环境下给项目安装需要的模块,并将其写入到pipfile
>>> pipenv install django=1.11.11

6、退出虚拟环境
>>> exit
  • pipenv其他常用操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1、查看项目位置
>>> pipenv --where

2、查看虚拟环境位置
>>> pipenv --venv

3、查看解释器信息
>>> pipenv --py

4、查看包的依赖结构
>>> pipenv graph

5、卸载模块
>>> pipenv uninstall django

6、卸载全部包并从Pipfile中移除
>>> pipenv uninstall --all

7、检查安全漏洞
>>> pipenv check

Windows下Python环境搭建

与大多数UNIX系统和服务不同,Windows系统没有预安装Python。为了使Python可用,很多年来CPython 团队已经编译了每一个 release 的Windows安装程序(MSI 包)。这些安装程序主要用于每个用户单独安装Python时,添加核心解释器和库。安装程序还可以为一台机器的所有用户安装,并且可以为应用程序本地分发提供单独的zip文件。

安装包种类

https://www.python.org/downloads/

  • 32位/64位Python2.x安装包
  • 32位/64位Python3.x安装包
  • web installer(网络安装包)是一个小的初始化工具,它将在安装过程中,根据需要自动下载所需的组件。
  • offline installer(离线安装包)内含默认安装所需的组件,可选择功能仍需要Internet连接下载

官网下载python安装包

此处以安装64位python3.x为例

如果选择立即安装

  • 不需要管理员权限
  • Python将安装到用户目录中
  • 将根据第一页底部的选项安装
  • 将安装标准库,测试套件,启动器和pip
  • 如果选择将安装目录将添加到 PATH
  • 快捷方式仅对当前用户可见

如果选择自定义安装

  • 要安装的功能
  • 安装位置
  • 其他选项或安装后的操作。
  • 如果要安装调试符号或二进制文件,需要使用此选项。

☆无UI安装

  • 要完全隐藏安装程序UI并静默安装Python,可以使用 /quiet 选项。
  • 要跳过用户交互但仍然显示进度和错误,可以使用 /passive 选项。
  • 可以通过 /uninstall 选项立即开始删除Python,即不会显示任何提示。
  • 例如,要以静默方式全局安装默认的Python,使用以下命令:
1
python-3.7.4.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0

验证安装

  • 在命令行输入python --version以验证是否安装成功

Linux(CentOS7.x)下Python环境搭建

由于CentOS等大多数Linux发行版中默认安装了python2.7版本,但是对于python开发者而言python3.x的许多特性才是未来,所以本文介绍如何在CentOS7.x操作系统下安装python3.x。

安装依赖包

  • 在CentOS系统中安装python需要 GCC 编译器和 make 编译工具,其包含在 Development tools 软件组中,所以需要安装Development tools 软件组。

    1
    sudo yum groupinstall "Development tools"
  • Python3.x 源文件使用 zlib 格式打包,所以需要安装 zlib 软件包,同时python在编译安装时需要使用 zlib 的头文件和链接库,所以需要安装 zlib 的头文件和链接库 zlib-devel 软件包。

    1
    sudo yum -y install zlib zlib-devel
  • Python3.x 有个内置模块 ctypes,它是 Python3.x 的外部函数库,需要使用系统外部函数库(libffi)的头文件和链接库,所以需要安装外部函数库(libffi)头文件和链接库 libffi-devel 软件包。

    1
    sudo yum -y install libffi-devel
  • 同时还需要一些其他python安装需要的模块,在此不一一做解释

    1
    sudo yum -y install bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

下载安装包解压

1
2
3
cd 安装包下载目录
wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz
tar -xvJf Python-3.7.4.tar.xz

编译安装

1
2
3
4
mkdir /usr/local/python3  # 创建编译安装目录
cd Python-3.7.4
./configure --prefix=/usr/local/python3
make && make install

创建软链接

1
2
ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3

验证安装

  • 在命令行输入python --version以验证是否安装成功

MacOS下Python环境搭建

MacOS附带Apple预安装的Python2.7。同样,对于python开发者而言,肯定是需要python3.x环境的,那么如果选择从python官网安装较新的 Python 版本,那么Mac上将安装两个不同版本的Python ,因此在使用过程中python解释器的路径与想要执行的python版本一致非常重要。

官网下载python安装包

https://www.python.org/downloads/release/python-374/

验证安装

  • 在命令行输入python --version以验证是否安装成功

配置环境变量

  • 打开.bash_profile

    1
    vi ~/.bash_profile
  • 添加别名,使python命令指向python3.x解释器

    1
    alias python=/usr/local/bin/python3.7
  • 生效文件

    1
    source .bash_profile