惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
G
Google Developers Blog
有赞技术团队
有赞技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客
博客园 - 聂微东
V
Visual Studio Blog
博客园_首页
D
DataBreaches.Net
腾讯CDC
I
InfoQ
F
Fortinet All Blogs
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
云风的 BLOG
云风的 BLOG
月光博客
月光博客
Recent Announcements
Recent Announcements
MongoDB | Blog
MongoDB | Blog
C
Check Point Blog

博客园 - yaksea

APScheduler: standalone vs daemonic 一句话解释jquery中offset、pageX, pageY、position、scrollTop, scrollLeft的区别 mongodb正则查询使用须知 PhoneGap源代码下载地址 python mysql 库的安装 windows环境下PYTHONPATH的设置 Eclipse+pydev2.2+python2.7 中文乱码问题 雷军:互联网创业的葵花宝典 什么是node.js 对python元类概念的理解 设置Django,在Eclipse+PyDev环境中开发Django应用 Python下划线与命名规范 Django如何进行数据访问查询 Django IDE 开发环境的搭建 在Eclipse下如何安装插件 使用Django如无到有11步快速构建Web应用 如何使用blog客户端 Apache如何添加虚拟目录 Zend Studio下的PHP代码调试
Python的模块、包等概念的理解
yaksea · 2011-08-30 · via 博客园 - yaksea

python包、模块与文件系统的对应关系

包:对应于文件夹,模块:文件

导入模块

模块搜索路径
导入一个叫spam的模块时,解释器先在当前目录中搜索名为spam.py的文件,然后在环境变量PYTHONPATH指向的目录列表中搜索,然后是环境变量PATH中的路径列表。如果PYTHONPATH没有设置,或者文件没有找到,接下来搜索安装目录,在UNIX中,通常是 /usr/local/lib/python实际上,解释器由sys.path变量指定的路径目录搜索模块,该变量初始化时默认包含了输入脚本(或者当前目录),PYTHONPATH和安装目

sys.path.append(modulepath)

使用该方法加入sys.path只能在运行时,下次运行编译器时就不存在,这里modulepath可以是包含.py/pyc/pyo/pyw等文件的zipegg

clip_image002

clip_image004

__init__.py

模块import前都会调用该文件

clip_image006

因此,可以在__init__.py文件中定义__all__

__all__

通过定义列表__all__,模块可以精确控制from module import *导入的名称集合,比如

module.py

__all__ = [‘bar’, ‘SomeClassName’, ‘SomeProperty’, ‘SomeFunction’]

from . import somemodule

.表示与调用模块相同的目录

..表示上级模块,比如from .. import somemodule

单独导入包名称不会导入包中所包含的子模块,比如:

import somepack

somepack.somemodule(xx) #失败!

但由于import somepack会执行somepack下的__init__.py,所以如果__init__.py中有

from . import somemodule之类的语句,则somepack.somemodule(xx)可以执行。

分发

一定的格式规范:

clip_image007

添加setup.py文件

clip_image008

clip_image010

clip_image012

clip_image014

clip_image016

文件格式

python并非完全是解释性语言,它是有编译的,先把源码py文件编译成pyc或者pyo,然后由python的虚拟机执行,相对于py文件来说,编译成pycpyo本质上和py没有太大区别,只是对于这个模块的加载速度提高了,并没有提高代码的执行速度,通常情况下不用主动去编译pyc文件,文档上说只要调用了import model那么model.py就会先编译成pyc然后加载

pypyc的区别

pyc:预编译过的

pyo

优化的预编译

python -O -m py_compile file.py

pypyw的区别

Windows.py python.exe 运行,.pyw pythonw.exe 运行

python.exe 比较起来,pythonw.exe 有以下的不同:

1)执行时不会弹出控制台窗口(也叫 DOS 窗口)

2)所有向原有的 stdout stderr 的输出都无效

3)所有从原有的 stdin 的读取都只会得到 EOF

.pyw 格式是被设计来运行开发完成的纯图形界面程序的。

纯图形界面程序的用户不需要看到控制台窗口。

参考资料:

Python sys.path详解