Python 模块基本情况【详见】
- import
直接引入模块 - from … import
从一个模块中导入一个指定的部份到当前命名空间中 - from … import*
把一个模块中的所有内容全部导入到当前命名空间中
注:一般不推荐最后一种全部导入的方式,存在潜在的危险。如,同时导入module1和module2的所有内容,加入这两模块中均含有一个foo()函数,则当程序中执行如下代码时:
`foo()`
此时无法确定该foo()函数是属于哪个模块中的。
Python中的包
包就是文件夹,但该文件夹下必须存在_init_.py文件, 该文件的内容可以为空。 其用于标识当前文件夹是一个包。
只有包含_init_.py文件的模块才能够被调用
文件目录一览
同级目录调用
file1与file2为同级目录
dataProcess.py、kmeans.py及kmeans-test.py为同级目录
- 同一子目录下
(一)在同一file2文件目录下,当需要在kmeans-test.py中调用kmeans.py中的method()方法时
# kmeans-test.py
import kmeans
kmeans.method()
# kmeans-test.p
from kmeans import method
method()
- 不同子目录下
(二)分别在file1与file2中,当需要在dataProcess.py中调用kmeans.py中的method()方法时
# dataProcess.py
# 跳转目录
import sys
sys.path.append('..') # 1.回到上一级目录file1
from file2 import kmeans # 2.再从file1的同级目录file2下去寻找kmeans.py模块
kmeans.method()
非同级目录调用
file2与file3为非同级目录
file3与kmeans-test.py为同级目录
(三)需要在file2的kmeans-test.py中调用file3的kmeans1.py的method()方法时
# kmeans-test.py
from file3 import kmeans1
kmeans1.method()
如果直接import kmeans1
就会失败,因为kmeans-test.py与kmeans1.py不在同一级目录中,需要通过其同级目录file3来from
寻找到kmeans1.py模块(与情况(一)中第二种调用方法本质相同)
注:各级文件目录、py文件及py文件中的方法均可视作一个模块来讨论,目录级别(路径)问题才是影响调用是否成功的关键
成功调入的关键两点
- init.py
- 调用的搜索路径正确(sys.path.append(‘路径’))
参考学习资料
Python:sys.path详细介绍
Python:ImportError:No module named ‘XXX’
Python模块[跨目录]调用总结
不吝赐教 ~