模块--实战

2017-11-22  本文已影响0人  盛夏光年_49e9

1.1.1定位模块

当你导入一个模块,Python解析器对模块位置的搜索顺序是:

1.当前目录

2.如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。

3.如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/bin/python/

4.模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

导入模块的两种方式

这是第一种方式

这是第二种方式

这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。

只能用一次,如果下次想用还需要,继续运用as方法

如果不加上这句话看效果

结果:

至此,可发现laowang.py中的测试代码,应该是单独执行test.py文件时才应该执行的,不应该是其他的文件中引用而执行

为了解决这个问题,python在执行一个文件时有个变量__name__

#模块中的__all__,只针对当导入时候用from laowang import *

当文件中不加__all__的时候,打印结果

老王中第一次代码

第二次中老王的代码:

结果是:

当不用from laowang import *导入的时候,仍旧可以访问,test2函数,通过结果可以看出,

__all__只针对当导入用from laowang import *

python中的包

引入包

使用import 文件.模块 的方式导入

使用from 文件夹 import 模块 的方式导入

重新使用from 文件夹 import 模块 的方式导入

另一种导入方式

包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py 文件,那么这个文件夹就称之为包

有效避免模块名称冲突问题,让应用组织结构更加清晰

多层嵌套的两种方式

模块发布

1.mymodule目录结构体如下:

.

├── setup.py

├── suba

│   ├── aa.py

│   ├── bb.py

│   └── __init__.py

└── subb

├── cc.py

├── dd.py

└── __init__.py

2.编辑setup.py文件

py_modules需指明所需包含的py文件

from distutils.core import setup

setup(name="yongGe", version="1.0", description="yongGe's module", author="yongGe", py_modules=['suba.aa', 'suba.bb', 'subb.cc', 'subb.dd'])

3.构建模块

python setup.py build

构建后目录结构

.

├── build

│   └── lib.linux-i686-2.7

│       ├── suba

│       │   ├── aa.py

│       │   ├── bb.py

│       │   └── __init__.py

│       └── subb

│           ├── cc.py

│           ├── dd.py

│           └── __init__.py

├── setup.py

├── suba

│   ├── aa.py

│   ├── bb.py

│   └── __init__.py

└── subb

├── cc.py

├── dd.py

└── __init__.py

4.生成发布压缩包

python setup.py sdist

打包后,生成最终发布压缩包yongGe-1.0.tar.gz , 目录结构

.

├── build

│   └── lib.linux-i686-2.7

│       ├── suba

│       │   ├── aa.py

│       │   ├── bb.py

│       │   └── __init__.py

│       └── subb

│           ├── cc.py

│           ├── dd.py

│           └── __init__.py

├── dist

│   └── yongGe-1.0.tar.gz

├── MANIFEST

├── setup.py

├── suba

│   ├── aa.py

│   ├── bb.py

│   └── __init__.py

└── subb

├── cc.py

├── dd.py

└── __init__.py

先按以上方式做题,然后得出的压缩问价发个别人的时候,首先解压

把自己所做的文件可以导入到python3的路径下,以后可以随时导入

上一篇下一篇

猜你喜欢

热点阅读