python模块

 1.模块的定义

      随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块.abc.py模块的名字就变成了mycompany.abc

2.__init__.py
  每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是mycompany。

3.变量域

  python的函数域默认的命名规范是:正常的函数和变量名是公开的(public),可以被直接引用,类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途.类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用.python 没有限制不能对private进行引用.

4.模块安装 

 在Python中,安装第三方模块,是通过包管理工具pip完成的。

一般来说,第三方库都会在Python官方的pypi.python.org网站注册

安装Pillow的命令就是:

pip install Pillow

5.引用模块的搜索路径

当我们试图加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错.

默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中.
如果我们要添加自己的搜索目录,有两种方法:
一是直接修改sys.path,添加要搜索的目录:

>>> import sys
>>> sys.path.append('/Users/michael/my_py_scripts')

第二种方法是设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。

6.__init__.py文件用法

   (1)导入其他的包,或者模块。

    [python]   #貌似可以不需要写
  import readers 
  import writers 
  import commands 
  import users 
  import meta 
  import auth 
  import admin 

      这样,当我们导入这个包的时候,__init__.py文件自动运行。帮我们导入了这么多个模块,我们就不需要将所有的import语句写在一个文件里了,也可以减少代码量。

      在一个包里有foo.py、__init__.py

#__init__.py
import os
import datetime
#foo.py
from __init__ import *
print datetime.datetime.now()

    (2)__all__

     __init__.py 中还有一个重要的变量,叫做 __all__。我们有时会使出一招“全部导入”,也就是这样:
  from PackageName import *
  这时 import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。

      比如__all__ = ["Module1", "Module2", "subPackage1", "subPackage2"]

    (3)加入mian函数,当作为模块被调用时执行

def main():
    print('__init__.main()')

     (4)引入package的过程中,__init__.py会运行,因此,如果某些变量或方法需要常驻内存,可以将它们写入__init__.py文件中

 

import PackageName

 7 pip常用命令

Usage:   
  pip <command> [options]
 
Commands:
  install                     安装包.
  uninstall                   卸载包.
  freeze                      按着一定格式输出已安装包列表
  list                        列出已安装包.
  show                        显示包详细信息.
  search                      搜索包,类似yum里的search.
  wheel                       Build wheels from your requirements.
  zip                         不推荐. Zip individual packages.
  unzip                       不推荐. Unzip individual packages.
  bundle                      不推荐. Create pybundles.
  help                        当前帮助.
 
General Options:
  -h, --help                  显示帮助.
  -v, --verbose               更多的输出,最多可以使用3次
  -V, --version               现实版本信息然后退出.
  -q, --quiet                 最少的输出.
  --log-file <path>           覆盖的方式记录verbose错误日志,默认文件:/root/.pip/pip.log
  --log <path>                不覆盖记录verbose输出的日志.
  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
  --timeout <sec>             连接超时时间 (默认15秒).
  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
  --cert <path>               证书.
# pip show --files somepackage   
   pip查看已安装的包中包含哪些文件
# pip list  --outdated
   pip检查哪些包需要更新

 

8 pip超时的解决

     在使用pip安装包时经常会出现超时的错误。可以通过镜像下载相应的安装包。

     例如清华大学镜像地址:http://e.pypi.python.org

      可以使用下面的命令安转

pip install flask -i http://e.pypi.python.org/simple
pip install flask -i http://pypi.v2ex.com/simple

    还可以再配置文件中修改timeout和镜像地址

[global]
timeout = 6000
index-url = http://e.pypi.python.org/simple
[install]
use-mirrors = true
mirrors = http://e.pypi.python.org

     在unix和macos,配置文件为:$HOME/.pip/pip.conf
     在windows上,配置文件为:%HOME%\pip\pip.ini

posted @ 2016-07-23 11:23  william的博客  阅读(1049)  评论(0编辑  收藏  举报