python之pip

一、pip安装第三方库

  python之所以强大,就是因为它有丰富的第三方库。python官方维护了一个库系统,我们不需要去找链接去下载第三方库,只需要用一条指定的命令就可完成我们的安装。常用的pip命令如下

  1. pip install django         # 安装django,若原先已经安装了django,则先卸载再安装
  2. pip install django==1.8.2   # 安装django1.8.2版本,这是项目常用的命令
  3. pip download django     # 先下载django,下次安装不会重新下载,会从缓存安装
  4. pip list    # 列出已经安装的库
  5. pip list --ourdated    # 列出不是最新的库
  6. pip install -U/--upgrade django   # 更新django
  7. pip install -i https://pypi.doubanio.com/simple/ django  # 通过豆瓣的源来安装
  8. pip show django     # 展示django的信息
  9. pip search django     # 去互联网搜索带django字符串的包(模糊匹配)
  10. 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环境的包。

  1. 安装virtualenv       
  2. 创建环境         # virtualenv myenv
  3. source 目录/activite

  4. 通过pip安装环境所需

  5. 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)
View Code
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)
View Code
 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

 

posted @ 2017-05-02 16:16  龙云飞谷  阅读(660)  评论(0编辑  收藏  举报