Python学习入门:一文了解搭建Python开发环境

Quarterback 2022年07月06日 1,104次浏览

1、Why Python
2、关于CPython、PyPy、Jython、IronPython
3、安装Python运行环境:Python解释器
4、Python依赖包管理:pip和anaconda
5、Python虚拟环境:virtualenv、venv、pyenv、pipenv、anaconda
6、Anaconda安装
7、使用IDE进行Python开发:Pycharm、Eclipse、IDEA、VSCode、jupyter notebook

1、Why Python

在编程语言鄙视链中,常见鄙视Python的理由有:

  • 解释型语言,执行慢
  • 不支持真正多线程并发
  • Python 2和3两个版本语法竟然不兼容
  • 弱智的缩进语法风格,“需要游标卡尺辅助开发”
  • 省略余下的101条其他理由..

但是,人不可貌相,编程语言也一样。学习Python的必要性主要在三方面:数据分析、人工智能、运维。由于在这三方面的应用,因此,Python再丑,也是值得好好学习的。

  • 数据分析:Python有大量用于数值计算和数据分析的库以及可视化库
  • 人工智能:大部分主流的机器学习框架都是Python写的,因此Python成为人工智能开发领域默认使用开发语言
  • 运维:由于Python解释型语言、可交互式编程的特点,使用Python语言编写运维工具和脚本比shell脚本更强大灵活

作为鄙视链中上层的Javaer,可以跟我一起边鄙视边学习Python。
工欲善其事必先利其器,因此本篇,我们先学习搭建丑陋的Python开发运行环境。

2、关于CPython、PyPy、Jython、IronPython

在搭建Python环境之前有一个概念需要了解清楚,那就是不同的Python实现方式。刚了解Python的同学可能和我一样,都会对Python又分为CPython、IronPython、JPython、PyPy等感到迷惑。

其实原因很简单,因为Python语言本身只是一门语言标准规范,实现Python语言(主要是解释器实现)有很多种方式,其中CPython、PyPy、JPython、IronPython就是其中几种主要的实现方式:

  • CPython:顾名思义,就是C语言编写的Python实现,也是Python的默认官方参考实现方式,我们常用的都是这种实现的解释器。(注:因为官方实现方式是CPython,我们下面关于开发运行环境的描述都是针对CPython进行讨论。)
  • IronPython:Python的.net实现
  • Jython:Python的JVM实现,实现方式是通过将python源码编译成java字节码,然后在jvm上运行。这个应该和scala、groovy的运行机制很类似。
  • PyPy:rPython实现,rPython是Python的一个子集,PyPy一个特点是它通过JIT即时编译技术优化了Python执行性能,类似Java hostspot的JIT。

一个Python语言,竟然有这么多种不同实现,真是丑陋啊,我们继续学习。

3、安装Python运行环境:Python解释器

python安装包下载地址:https://www.python.org/downloads/

python安装包包括:python解释器和支持的库(python语言提供的标准库,第三方库需要通过pip等Python包管理工具手动安装)

Windows下安装,跟着安装向导默认执行即可。

Linux下安装Python3步骤(通常的Linux发行版本,默认是安装有python环境的,一般默认安装的是Python2):

# 1.查看已有python安装路径
whereis python
# 2.查看python版本
python --version
# 3.安装依赖,用于编译Python3
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
# 4.添加epel扩展源
yum -y install epel-release
# 5.安装pip
yum install python-pip
# 6.下载python3的源码包
wget https://www.python.org/ftp/python/3.9.12/Python-3.9.12.tar.xz
# 7.解压
xz -d Python-3.9.12.tar.xz
tar -xf Python-3.9.12.tar
# 8.手动编译
cd Python-3.9.12
./configure prefix=/usr/local/python3
make && make install
# 9.如果安装成功,在/usr/local/目录下会有python3目录,添加python3的软链接
ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3
# 10.验证
python3 -V

查看python安装路径:

  • windows下:
where python
> C:\Python37\python.exe
  • Linux下:
whereis python
  • 或者进入python交互环境,通过代码查看:
# 引入sys模块
# sys模块是最常用的和python解释器交互的模块,sys模块提供访问由解释器(interpreter)使用或维护的变量和与解释器进行交互的函数
import sys
# python解释器路径
sys.executable

验证安装是否成功:

> python --version
> Python 3.9.12

4、Python依赖包管理:pip和conda

类似Java中Maven或Gradle对依赖包的管理,在Python开发过程中,除了Python安装包内置的标准库外,还可能用到大量的第三方库,因此涉及到对这些依赖包的管理。在Python中,主要用到的依赖包管理工具是pip和conda。

pip是官方推荐的工具,用来从pypi(Python Package Index)安装python软件包。Pip可以以wheel或源码形式来安装。以源码形式安装时要求系统中具有兼容的编译器。

conda是跨平台的安装包和环境管理工具,用来从Anaconda repository和Anaconda Cloud中安装conda软件包。Conda软件包是二进制的,因此不需要编译器,而且Conda软件包不仅限于Python包,也可以是C/C++ lib或R软件包。

conda和pip比较:

conda和pip比较
conda和pip比较

5、Python虚拟环境:virtualenv、venv、pyenv、pipenv、anaconda

首先,为什么需要虚拟环境?
虚拟环境的一个主要目的是做环境隔离。因为在Python中,通过pip来安装第三方包,由于pip的特性,系统中只能安装每个包的一个版本,默认安装在site-packages目录下。但是在实际项目开发中,不同项目可能需要不同版本的第三方包,并且可能需要根据实际需求不断进行更新或卸载相应的包。而如果我们所有项目的开发和部署都直接使用本地的Python环境,会导致整体的开发部署环境相当混乱且不易管理。此外,不同项目除了包版本冲突外,可能对Python版本的需求也不一样,因为python2和python3语法不兼容。因此,这时候我们就需要分项目进行环境隔离,使得各项目可以在一个独立的空间进行开发和部署,避免相互影响。

其实这和我们Java开发中的包管理也很类似,不同项目需要的第三方依赖版本也会有区别,不同的项目通过maven或gradle独立加载自己依赖,并且复制打包到各自的jar包或 classpath路径中,并且通过不同的JVM虚拟机进程实例通过各自的类加载器加载依赖包,避免了项目之间共用依赖包产生冲突。

其次,虚拟环境的基本实现原理是什么?
简单了解了下,不同工具的虚拟环境实现原理应该都大同小异,应该都是通过在创建虚拟环境的时候复制一份python安装环境,并且在激活时通过设置环境变量到当前虚拟环境的python来达到切换当前环境到虚拟环境的目的。

最后,不同虚拟环境工具的区别?

  • virtualenv: virtualenv在2.x版本中就出现了,也可以在3.x版本使用,需要单独安装。功能强大。
  • venv: python内置的虚拟环境工具,在3.3版本之后出现,3.6版本成为python默认推荐的虚拟环境工具。
  • pyenv: pyenv 主要用来对 Python 解释器进行管理,可以管理系统上的多个版本的 Python 解释器。它的主要原理就是将新的解释器路径放在 PATH 环境变量的前面,这样新的 python 程序就“覆盖”了老的 python 程序,达到了切换解释器的目的。
  • pipenv: pipenv 是一款比较新的包管理工具,其借鉴了 javascript 的 npm 和 PHP 的 composer 等理念,通过一个依赖描述文件 Pipfile 来安装和管理依赖,以达到协同开发的目的。pipenv 其实整合了 pip 和 virtualenv 等库,在其上推出了更便捷的使用方式。
  • anaconda: Anaconda 附带的包管理工具。它其实不仅仅是针对 Python 环境管理,还可以管理 R, Scala, Java, JavaScript, C/ C++等语言的包、依赖和环境管理。并且还提供了 UI 界面。功能很强大,但是仅仅针对Python包管理而言,太重。

6、Anaconda安装

Anaconda下载地址:https://www.anaconda.com/
Linux下安装Anaconda:

  • 1、创建安装目录
cd /opt/
mkdir anaconda
  • 2、下载Anaconda安装程序
wget https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh
  • 3、安装Anaconda
sh Anaconda3-2022.05-Linux-x86_64.sh

安装过程会询问安装路径,默认是安装在'/当前用户/anaconda3'目录下,如果不需要修改,直接回车跳过设置即可。其他确认接受安装许可协议、是否初始化,一路yes回车即可。
4、验证安装

conda -V

关闭并重新连接终端,执行如下命令验证,安装成功会输出当前安装anaconda版本信息:

7、使用IDE进行Python开发:Pycharm、Eclipse(pydev)、IDEA、VSCode、jupyter notebook

开发Python主要IDE工具有Pycharm、Eclipse(pydev)、IDEA、VSCode、jupyter notebook。

  • PyCharm:其中Pycharm是JetBrains专门出品的用于Python开发的,感觉功能应该是最完善的,分社区免费版和收费版。
  • Eclipse:Eclipse和IDEA都可以通过安装python插件集成Python项目开发,其中eclipse通过pydev插件进行集成,可以在Eclipse Marketplace中搜索pydev进行安装,安装后在Eclipse-Window-Preference-Pydev-Interpreter-Python Interpreter中配置python解释器路径即可。
  • VSCode:通过安装python扩展也可以支持python项目开发,貌似还可以集成jupyter notebook
  • jupyter notebook:Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示的程序。其也可以集成python开发。可以独立安装,也可以通过Anaconda安装启动。安装后,默认会在后台启动一个监听8888端口的web服务,来接收web界面编写的代码相关编辑、运行等请求。