Python 安装

Python 语言环境集成开发环境

编译安装 python

0. 安装环境

  • CentOS7
  • Python-3.6.8

1. 准备编译环境

安装依赖包
安装静态库
# yum install -y openssl-static
注:如果不安装该静态库,会导致python的pip安装失败
安装gcc
# yum install -y gcc wget
# yum groupinstall "Development tools"
# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

2. 下载Python 官方

# cd /usr/local/src
# wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
# tar xf Python-3.6.8.tar.xz

3. 编译安装

  • gcc:编译c语言源码
  • gcc-c++: 编译c++语言源码
进入安装目录
# cd Python-3.6.8
预编译
# ./configure --enable-optimizations --prefix=/usr/local/python-3.6.8
编译安装
# make && make install

4. 环境变量配置

添加刚安装的python3版本的文件连接
# ln -s /usr/local/python-3.6.8/bin/python3.6 /usr/bin/python36
查看python3版本信息
# python36 -V
Python 3.6.8
添加pip的文件连接
查看pip版本信息
# python36 -m pip -V
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)
注:如果输出提示没有pip,则安装pip
添加pip的文件连接
# ln -s /usr/local/python-3.6.8/bin/pip3 /usr/bin/pip3
查看pip版本信息
# pip3 -V
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)

5. pip 安装

下载pip
# wget https://bootstrap.pypa.io/get-pip.py
安装pip
# python36 get-pip.py
查看pip版本信息
# python3 -m pip -V
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)
将pip添加到环境变量
# vim /etc/profile
...
export PATH="/usr/local/python3/bin:$PATH"
然后运行
# source /etc/profile
查看pip版本信息
# pip3 -V
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)

pycharm 配置

Settings->Editor->File and Code Templats -> Python Script
#__author__ = '${USER}'
#date = ${DATE}

执行 Python 方法

方法1

$ python python_file.py

方法2

文件首行带有解释器声明
#!/usr/bin/env python 或 #!/usr/bin/python3
授予文件有执行权限:
$ chomw u+ python_file.py
执行文件
$ ./python_file.py

Python 2 or Python 3

  • Python2 Python3
  • print print()
  • _winreg winreg
  • ConfigParser configparser
  • copy_reg copyreg
  • Queue queue
  • markupbase _markupbase
  • repr reprlib
  • test.test_support test.support
  • 1/2=0 1/2=0.5
  • raw_input input
  • class Foo: class Foo(object)

字符编码

  • 2.x 默认编码 ASCII 码(不支持中文)
    • 支持中文方式,文件编码
      • #-*- coding:utf-8 -*- 官网推荐方式
      • #coding=utf-8
    • u"中文编码"
      • type(us) # unicode 类型
      • unicode 编码 向下兼容 gb2312 和 gbk
  • 3.x 默认编码是 UNICODE (支持中文)
  • 1980年(6700+) gb2312
  • 1995年(20k) GBK
  • 2000年(27k) gb18030(包括繁体字)
  • big5 台湾
  • unicode 65535,支持所有国家和地区的编码
    • 存一个字符,同一占用2个字节
  • utf-8 65535
  • unicode 的扩展集,解决占用空间问题,可变长的字符编码
    • ASCII 占用1个字节
    • 欧洲的字符占用2个字节
    • 东亚的字符3个字节,汉字占用3个字节
  • Python2 字符编码默认是 ASCII
  • Python2 GBK 转换 UTF-8
    • GBK 转换 Unicode 编码
    • Unicode 转换 UTF-8 编码
  • Python2 GBK 转换 UTF-8 格式流程:默认是 ASCII
  • 编码[decode]转换为 Unicdoe 编码
  • 解码[encode]转换为 utf-8 编码
默认是 utf-8
sys.getdefaultencoding()

Python 种类

  • CPython: 原始、标准的实现方式, C解释器 .pyc(字节码) 机器码 CPU
  • Jython: 用于与Java语言集成的实现,java解释器 java字节码 机器码 CPU
  • IronPython: 用于与.Net框架集成的实现, C#解释器 C#字节码 =》 机器码 CPU
  • pypy: 解释器 字节码 机器码 => CPU

Python 多版本环境搭建 - CentOS OS 安装开发环境

Python 多版本共存配置

  • 关于环境变量:可执行文件包含到PATH环境变量中
  • 安装python多个版本之后,在python.exe和pip.exe所在目录下复制一份python-版本名.exe和pip-版本名.exe文件。按照优先顺序版命令所在目录追加到path 环境变量当中。
# echo $PATH
# whereis python
# ln -s /usr/bin/python3.5 /usr/bin/python3
# ln -s /usr/bin/python2.7 /usr/bin/python2
# python3
# python2
配置默认python
# rm /usr/bin/python
# ln -s /usr/bin/python3.5 /usr/bin/python
  • Pycharm配置
    • 新建项目(Pure Python -> Interpreter: 选择版本)
    • 新建hello.py 文件之后执行文件
    • 在 run 窗口显示运行python 版本
    • 更换 Python 版本
    • Settings -> Project: 名字 -> Project Interpreter -> 选择版本 -> OK
    • 任务栏中切换版本切换
    • 运行程序,在run 窗口中显示相应切换版本
# yum -y groupinstall "Development Tools"
# yum -y install readline readline-devel readline-static openssl openssl-devel openssl-static zlib-devel bzip2-devel ncurses-devel sqlite-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel bzip2-devel bzip2-libs git build-essential zlib1g-dev libssl-dev libsqlite3-dev libbz2-dev libreadline-dev libreadline-dev

pyenv 安装

# git clone https://github.com/yyuu/pyenv.git ~/.pyenv
将 PYENV_ROOT 和 pyenv init 加入 bash的 ~/.bashrc
# echo 'export PATH=~/.pyenv/bin:$PATH' >> ~/.bashrc
# echo 'export PYENV_ROOT=~/.pyenv' >> ~/.bashrc
# echo 'eval "$(pyenv init -)"' >> ~/.bashrc
# source ~/.bashrc
查看可安装的版本
# pyenv intsall --list`
  • anaconda-2.0.1 支持Python 2.6和2.7
  • anaconda3-2.0.1 支持Python 3.3和3.4
其中形如x.x.x这样的只有版本号的为Python官方版本,其他的形如xxxxx-x.x.x这种既有名称又有版本后的属于“衍生版”或发行版
安装指定版本: # pyenv install 3.5.4
该命令会从github上下载python的源代码,并解压到/tmp目录下,然后在/tmp中执行编译工作。若依赖包没有安装,则会出现编译错误,需要在安装依赖包后重新执行该命令对于科研环境,更推荐安装专为科学计算准备的Anaconda发行版,pyenv install anaconda-2.1.0安装2.x版本,pyenv install anaconda3-2.1.0安装3.x版本 Anacoda很大,用pyenv下载会比较慢,可以自己到Anaconda官方网站下载,并将下载得到的文件放在~/.pyenv/cache目录下,则pyenv不会重复下载
  • 卸载指定的 Python:# pvenv uninstall 3.5.4
  • 更新数据库:# pyenv rehash
  • 查看当前已安装的 Python 版本
# pyenv versions
* system表示当前正在使用的是系统自带的 Python
  • 设置全局 Python 版本
# pyenv global 3.5.4
# pyenv version
  • 临时改变 Python 版本
# pyenv local
# pyenv shell
  • 切换的 Python 版本
# pyenv global system
  • 切换到 Python 版本
# pyenv shell或者local 3.5.4
  • 示例代码
# mkdir python354 && cd python354
# pyenv local 3.5.4
当前工作目录使用 Python 3.5.4 版本
`# python -V` 查看版本
`# pip -V`查看一下 pip 版本
输入python即可使用新版本的python
系统自带的脚本会以/usr/bin/python的方式直接调用老版本的python,因而不会对系统脚本产生影响
使用pip安装第三方模块时会安装到~/.pyenv/versions/3.4.1下,不会和系统模块发生冲突
使用pip安装模块后,可能需要执行pyenv rehash更新数据库
### virtualenv 安装
- 开发环境应用独立
- 环境升级不影响其他应用,也不会影响全局的Python 环境
- 防止系统中出现包管理混乱和版本的冲突
``` shell
setup
# pip install virtualenv
create env
# virtualenv virtualName
# cd virtualName/Scripts
# activate.bat 进入虚拟环境
# pip list
# deactive.bat 退出虚拟环境

virtualenvwrapper-win(Windows OS 加 win)

# pip install virtualenvwrapper
创建虚拟环境 -> 自动进入虚拟环境
# mkvirtualenv virenv
删除虚拟环境 - 自动进入虚拟环境:
# rmvirtualenv virenv
推出虚拟环境
scripts> deactivate
查看有哪些虚拟环境
scripts> workon
进入虚拟环境
scripts> workon virenv
显示开发包
(virenv) > pip list
安装开发包
# pip install requests
卸载开发包
# pip uninstall requests

pyenv-virtual

pyenv-virtual 是 pyenv 的插件,支持管理多个 virtualenv
Setup
# git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
# echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
Create virtualenv
# pyenv virtualenv 版本号 虚拟环境名称
Delete virtualenv
# pyenv uninstall 虚拟环境名称
列表 virtualenv
# pyenv virtualenvs
激活/禁用 virtualenv
# pyenv active <virtualev-name>
# pyenv deactivate
Create Virtual Env
# pyenv virtualenv 3.5.4 venv-3.5.4
# mkdir myproject && cd myproject
# pyenv local venv-3.5.4
pyenv-virtualenv
# deactivate
pyenv-virtualenv
# activate venv-3.5.1
只要我们进入myproject目录,就会自动激活virtualenv,退出myproject目录,就会关闭virtualenv
如果要关闭自动激活,可以运行命令pyenv deactivate,要重新启用的话,运行pyenv activate 虚拟环境名

安装 ipython

# yum -y install ipython
# yum -y install ipython3

Python 性能优化工具

Psyco

Python语言的一个扩展模块,可以即时对程序代码进行专业的算法优化,可以在一定程度上提高程序的执行效率,尤其是在进程中大量循环操作时
目前开发已经停止,有PyPy所接替

PyPy

用Python实现的Python解释器
Python语言的动态编译器,是Psyco的后继项目可以运行在Linux的32bit和64 bit,MacOSX和Windows32bit平台中

Shed Skin

Python编译器,python代码转换成优化的C++代码 性能要求高的使用GO语言(Docker)

Computer Language History

  • 1973, C
  • 1983, C++
  • 1987, perl(Larry Wall)
  • 1989, Linux,Python
  • 1991, Python 正式版本,苏联解体,东西德合并
  • 1994, PHP, Netscape
  • 1995, Java, ruby(Ruby on rails)
  • 2009, Go
  • scalar:大数据开发
  • erlang: 面向并发编程
  • javascript: 前段语言
    • nodejs
  • vb: 微软, bat脚本
    • C#
  • lua: nginx脚本语言

Python 调试

  • pdb 调试:python -m pdb name.py
    • l :list 显示当前的代码
    • n :next 向下执行一行代码
    • c :continue 继续执行代码
      • c breakNum: 执行到断点号
    • b linenumber: break 添加断点
      • c
    • clear breakNum: 删除断点
    • s : step 进入到一个函数
      • a : 打印所有形参
      • r : return 快速执行到函数的最后一行
    • p 变量: print 打印一个变量
交互调试
def test(a,b):
c = a + b
return c
import pdb
pdb.run("test(11,22)")
程序里埋点
impor pdb
pdb.set_trace()
# python3 name.py
自动停在 pdb.run("test(11,22)") 之上
日志调试
import pdb
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
然后热修复

Anaconda

setup
# conda install 库名
update
# conda update 库名

爬虫常用库的安装

Windows 安装过程

检查 urllib 和 re 内置库

>>> import urllib
>>> import urllib.request
>>> urllib.request.urlopen('http://www.baidu.com')
>>> import re

安装 requests 库

> pip3.6 install requests
> python3
> import requests
> requests.get('http://www.wovert.com')

安装 selenium 库(自动化测试库-驱动浏览器)

> pip3.6 install selenium
> python3
> from selenium import webdriver
提示找不到chromedriver程序

下载安装 chromedriver 程序

chromedriver.exe 文件放到 python36/Scripts目录下
>>> from selenium import webdriver
>>> driver = webdriver.Chrome()
闪退原因:chromedriver与chrome版本不兼容,下载兼容chrome浏览器的chromedriver版本
>>> driver.get('https://www.python.org')
打印网页源代码
>>> driver.page_source

无界面浏览器 phantomjs.org

  1. 1.
    解压文件找到 phantomjs.exe
  2. 2.
    phantomjs.exe所在目录,配置到PATH环境变量
# phantomjs
phantomjs > conosle.log('hello world')
>>> from selenium import webdriver
>>> driver = webdriver.PhantomJS()
>>> driver.get('https://www.python.org')
>>> driver.page_source

安装 lxml 库(xpath解析库)

>>> pip3.6 install lxml
下载很慢
  • 解决方案:
  • 下载文件是lxml-xxxx.whl,但前提是必须先安装 pip3 install wheel
>>> pip3.6 install wheel
>>> pip3.6 uninstall lxml
>>> pip3.6 install C:\donwload\lxml-xxx.whl

安装 beautifulsoup

依赖于 lxml库
>>> pip3.6 install beautifulsoup4
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<html></html>','lxml')

安装 pyquery

>>> pip3.6 install pyquery
>>> from pyquery import PyQuery as pq
>>> doc = pq('<html>hello</html>')
>>> result = doc('html').text()
>>> result
hello

安装 pymysql(用于python3.6)

>>> pip3.6 install pymysql
>>> python
>>> import pymysql
>>> con = pymysql.connect(host='localhost',user='root',password='123456',port=3306, db='mysql')
>>> cursor = con.cursor()
>>> cursor.execute('select * from db')
>>> cursor.fetchone()

安装 pymongo

>>> pip3.6 install pymongo
>>> python
>>> import pymongo
>>> client = pymongo.MongoClient('localhost')
>>> db = client['newtestdb']
>>> db['table'].insert({'name':'Alice'})
>>> db['table'].find_one({'name':'Alice'})

安装 redis

用于分布式爬虫队列
>>> pip3.6 install redis
>>> python
>>> import redis
>>> r = redis.REdis('localhost',6377)
>>> r.set('name', 'Alice')
>>> r.get('name')
b'Alice'

安装 flask

Web框架库
>>> pip3.6 install flask
>>> python
>>> import flask

安装 django

Web服务器框架
>>> pip3.6 install django
>>> python
>>> import django

安装 jupyter

记事本库,编写markdown文档,依赖于ipython库
> jupyter notebook
打开浏览器创建文件并输入测试代码并运行,会输出运行结果
### title
Ctrl + Enter 保存

Linux/Mac 安装

# pip3 install requests selenium beautifulsoup4 pyquery pymysql pymongo redis flask django jupyter
Last modified 2yr ago