python之pip
一、pip安装第三方库
python之所以强大,就是因为它有丰富的第三方库。python官方维护了一个库系统,我们不需要去找链接去下载第三方库,只需要用一条指定的命令就可完成我们的安装。常用的pip命令如下
- pip install django # 安装django,若原先已经安装了django,则先卸载再安装
- pip install django==1.8.2 # 安装django1.8.2版本,这是项目常用的命令
- pip download django # 先下载django,下次安装不会重新下载,会从缓存安装
- pip list # 列出已经安装的库
- pip list --ourdated # 列出不是最新的库
- pip install -U/--upgrade django # 更新django
- pip install -i https://pypi.doubanio.com/simple/ django # 通过豆瓣的源来安装
- pip show django # 展示django的信息
- pip search django # 去互联网搜索带django字符串的包(模糊匹配)
- pip uninstall django # 卸载django
pip 安装的时候一般先搜索whl包(一种已经编译过的包),找不到whl包再搜索压缩包进行安装。
装有python3.x版本的windows中的scripts文件夹放有pip等程序,Lib中存放所有的库
注:更新pip源 python -m pip install --upgrade pip
二、virtualenv
在Python的开发环境的最常用的方法是使用virtualenv包。virtualenv是一个用来创建独立的Python环境的包。
- 安装virtualenv
- 创建环境 # virtualenv myenv
-
source 目录/activite
-
通过pip安装环境所需
-
deactivite退出环境
注:可以通过-p选项指定环境依赖的python版本,如virtualenv -p python2 myenv
三、JSON模块
JSON(javascript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。因为javascript支持的基本数据类型比较少,所以我们python中的字典的数据类型到了javascript层面就是对象了。在javascript中,我们常常有这样的一个需求,就是把A地的一个对象转化为一个字符串,然后通过网络传到B地,最后在B地把接收到的字符串转化为对象。在python中,有这样一个模块,这个模块可以把接收到的json格式的字符串转化为javascript中的对象,而这个对象在python中对应字典格式,这样就可以取出我们需要的数据了。这个模块就是内置的json模块。json模块共有四种方法,dumps、loads、dump以及load。
1 >>> import json 2 >>> data = {'a':1,'b':2} 3 >>> data1 = {'a':1,'b':2,} 4 >>> data_json = json.dumps(data) 5 >>> data_json 6 '{"b": 2, "a": 1}' 7 >>> data1_json = json.dumps(data1) 8 >>> data1_json 9 '{"b": 2, "a": 1}' 10 >>> json.loads('{"b": 2, "a": 1}') 11 {'b': 2, 'a': 1} 12 >>> json.loads('{"b": 2, "a": 1,}') 13 Traceback (most recent call last): 14 File "<pyshell#8>", line 1, in <module> 15 json.loads('{"b": 2, "a": 1,}') 16 File "C:\Python34\lib\json\__init__.py", line 318, in loads 17 return _default_decoder.decode(s) 18 File "C:\Python34\lib\json\decoder.py", line 343, in decode 19 obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 20 File "C:\Python34\lib\json\decoder.py", line 359, in raw_decode 21 obj, end = self.scan_once(s, idx) 22 ValueError: Expecting property name enclosed in double quotes: line 1 column 17 (char 16) 23 >>> s = str(data) 24 >>> s 25 "{'b': 2, 'a': 1}" 26 >>> json.loads(s) 27 Traceback (most recent call last): 28 File "<pyshell#11>", line 1, in <module> 29 json.loads(s) 30 File "C:\Python34\lib\json\__init__.py", line 318, in loads 31 return _default_decoder.decode(s) 32 File "C:\Python34\lib\json\decoder.py", line 343, in decode 33 obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 34 File "C:\Python34\lib\json\decoder.py", line 359, in raw_decode 35 obj, end = self.scan_once(s, idx) 36 ValueError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
1 >>> with open('text.txt') as f: 2 data = json.load(f) 3 >>> with open('text.txt','w') as f: 4 json.dump(data,f)
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import json 4 import requests 5 url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=https://www.baidu.com/link' 6 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36', 7 'X - Requested - With': 'XMLHttpRequest',} 8 while 1: 9 content = input('请输入要查询的单词或者中文[q退出]:').strip() 10 if content == 'q': 11 break 12 data = { 13 'type':'AUTO', 14 'i':content, 15 'doctype':'json', 16 'xmlVersion':'1.8', 17 'keyfrom':'fanyi.web', 18 'ue':'UTF-8', 19 'action':'FY_BY_ENTER', 20 'typoResult':'true', 21 } 22 #recv_data = requests.post(url, headers=headers, data=data).content.decode('utf-8') 23 recv_data = requests.post(url, headers=headers, data=data).text 24 # json.loads()会自动去掉字符串中的空格 25 recv_data = json.loads(recv_data) 26 recv_data_dict = recv_data['smartResult']['entries'] 27 for data in recv_data_dict: 28 if data: 29 print(data)
注:文本里的内容本身就是字符串,所以写在里面的json格式不需要加字符串。并且把对象作为json格式写到文件中时,文件的拓展名并没有强制规定是json.
在ubantu中安装pip2的命令是sudo apt install python-pip,安装python2的命令是sudo apt install python-minimal。
在ubantu中如果同时有pip,pip3,pip2,则用pip安装可能装在python2环境,也可能装在python3环境。我们可以通过pip -V/--version
我们在使用sudo pip3 install 'django>=1.8.2'这条命令的时候,后面的版本必须加引号
我们用sudo安装的东西都会安装在外面,因为sudo可以看作提权
在虚拟环境中,用pip命令即可,不需要用pip2或者pip3,因为虚拟环境就只有一个python