requests是Python社区一个非常知名的http请求库,我最近也在使用他完成了一个很简陋的代理IP请求,做一些事情。它的作者叫Kenneth Reitz,一个非常知名的Python程序员,以前是个胖子,减肥后变得非常帅,感觉非常非常励志。
这位Python大神写了一个关于Python的文档叫《The Hitchhiker’s Guide to Python!》,中文名字如题所示,Python搭车客指南,如果大家熟悉一本书叫《银河系搭车客指南》的话,一定会对这个名字会心一笑。
最近个人在系统的学习Python,由于之前的工作原因,自身积累的都是一些零散的知识,比如写个几百行的脚本跑跑数据,写个几个页面的网站之类的。知识无法形成体系,能写出Python代码,不能够做大规模的Python工程,知识总是停留在皮毛阶段。
开始准备系统学习Python的时候,发现没有什么特别好用的教程,国人写的教程简直不能看,百度上面的博客老旧到令人发指。找来找去发现了这个教程,如获至宝。我接下来可能要花几周的时间去读完这个在线教程,阅读笔记将以博客的形式展示出来。我不会翻译所有内容,仅仅是读自己需要的东西,然后记录成笔记,还是建议英文好的同学自行读英文。
在Mac OS上安装Python3
最近的Mac OS X High Sierra上面系统默认的Python版本还是2.7,现在社区都已经全面转向Python3了,所以在Mac上安装Python3是很有必要的。
安装Python3的前置条件:
首先,要安装XCode,直接在Mac App Store上面下载。
其次,安装完成XCode之后,就要安装Command Line Tools或者安装OSX-GCC-Installer这个环境,不过个人推荐Command Line Tools,打开终端,输入命令xcode-select --install即可安装,如下图:

然后,安装Homebrew,见官方文档。 Homebrew安装完成之后,在~/.profile里面添加路径(不是很了解Linux/Unix环境变量的同学可以网上搜索一下教程),添加路径: export PATH=/usr/local/bin:/usr/local/sbin:$PATH
,然后在终端输入source ~/.profile
。这样就可以使用Homebrew的命令行命令了。
输入brew install python
,漫长等待后,安装完成。
输入pip -v
,得到如下输出:

可以看到pip是关联Python3.7。
Pipenv & Virual Environments
Pipenv安装与使用
Python的virtual environments是帮助我们实现Python开发环境的隔离,原因是做开发的时候,基本不可能现在一套环境就能适应全部的项目,很大的可能是一个项目需要Django1.0,而最新的Django版本是1.8,所以我们需要Pipenv和Virual Environments来建立隔离开发项目。
首先需要安装Pipenv, Pipenv是Python工程的一个依赖管理工具,如果你对Node.js的npm或者Ruby的bundler很熟悉的话,就可以很好的理解这个工具。
pip install --user pipenv
安装完成后,在相应的Python工程文件夹里面安装需要的包,例如打开终端,创建一个myproject目录,终端进入目录,输入pipenv install requests
。此命令行运行完成后,myprojects文件夹里面有两个文件,如下图:

Pipfile的作用是跟踪管理你的项目依赖的包,加入你想把你的项目分享给其他的人的时候,别人可以通过Pipfile安装依赖的包。
前面我们已经在myproject文件夹下面安装了requests,下面来介绍一下如何使用刚刚安装的requests库。验证方式很简单,写三行代码即可。
import requests
response = requests.get('https://httpbin.org/ip')
print('Your IP is {0}'.format(response.json()['origin']))
运行 pipenv run python main.py
结果如下:

使用pipenv run python main.py
这个命令去运行main.py,是为了保证刚才使用pipenv安装的包可以被main.py使用。如果你觉得这个命令行太长,你可以先使用pipenv shell
进入pipenv的shell环境,再使用python main.py
运行脚本,得到的效果是一样的。
到这里为止,你已经可以很愉快的使用Pipenv安装Python的包了,如果还想了解的更加深入一些,请继续往下看。
Virtualenv的安装与使用
virtualenv可以创建一个完全独立的Python开发环境,通过virtualenv创建一个具有Python运行环境且包含相应的依赖文件的独立运行环境。Virtualenv可以单独使用,可以和Pipenv共存。
安装 pip install virtualenv
安装完成后,输入virtualenv --version
,得到如下图所示的virtualenv版本信息:

为我们的项目创建一个virtual environment运行环境,按照下面的步骤所示:
创建项目文件夹 mkdir my_project_folder
进入项目文件夹 cd my_project_folder
使用virtualenv创建项目 virtualenv my_project
等待运行完成之后,进入my_project目录,可以看到如下目录:

执行source ./bin/activate
,即可进入独立的Python环境,可以在此环境下面安装相关的Python库。
执行deactivate
,离开这个独立的Python环境。
执行pip freeze > requirements.txt
,就可以把工程的相关的库信息保存在文本文件里面。工程发送给相关的开发者,开发者可以依据requirements.txt
文件执行pip install -r requirements.txt
来安装相关的库。
virtualenvwrapper使用
virtualenvwrapper是基于virtualenv的封装,提供了比virtualenv更好友好的命令行方式去使用virtualenv。这个工具亦可以和virtualenv共同存在,不会有什么冲突。题外话,个人比较喜欢virtualenv,主要是virtualenv更加直观和具体。
执行 pip install virtualenvwrapper
进行安装。
执行 export WORKON_HOME
=~/Envs
执行 source /usr/local/bin/virtualenvwrapper.sh
即可使用virtualenvwrapper,如果按照以上的步骤去做,在Mac OS High Sierra上面是无法成功。这是由于Mac OS里面的Python环境还是Python2.7会对virtualenvwrapper产生一些问题,解决按照这个链接。
安装完成之后,就可以使用virtualenvwrapper。
执行 mkvirtualenv my_project
创建运行环境。
执行 workon my_project
进入创建的运行环境。
执行 deactivate
离开运行环境。
执行 rmvirtualenv my_project
删除运行环境。
其他命令行大家自行研究。
virtualenv-burrito
virtualenv-burrito是一个封装virtualenv + virtualenvwrapper的单命令行工具。
autoenv
autoenv这个工具可以帮助我们进入包含.env的virtualenv运行环境的文件夹,自动激活当前环境。
Mac OS X的安装方式:
brew install autoenv
网友评论