Python - module
Import Module
- 主程序和模块程序在同一目录下:
– folder:
—- test.py
—- module.py
test.py1
2
3
4
5def func1() :
print('Hello World!')
def func2() :
print('Python3')
module.py1
2
3
4
5def func1() :
print('Python3')
def func2() :
print('Hello World!')
test.py import module.py
在 test.py 文件中或者运行 test.py 时加入 import module
,则 test.py import 了整个 module.py。1
2
3
4============ RESTART: C:\Users\lizs\Desktop\Python3_test\test.py ============
>>> import module # import 整个模块
>>> module.func2() # 调用模块下的内容的时候要在前面加模块名和点分连接(module.func2())
Hello World!
也可以 import 模块中的个别内容,如:1
2
3>>> from module import func1 # import module 模块中的 func1
>>> func1() # 调用的时候就不用加模块名称了(module.func1())
Python3
也可以 from module import *
,但是这种方式不会导入下划线_
开头的名称。一般情况下不赞成使用这种方法。
注意,出于性能考虑,每个模块在每个解析器会话中只导入一次。因此,如果你修改了已经导入的模块,你必须重启解析器。或者,如果你就是想交互式的测试一下更改的模块,可以使用 importlib.reload(module)
。module.reload()
has been deprecated since version 3.4.1
2
3
4
5
6
7
8
9
10
11
12
13# module.py 添加了 func3()
>>> module.func3() # 更新之后直接调用
AttributeError: module 'module' has no attribute 'func3'
>>> import module # 再次 import,无效
>>> module.func3()
AttributeError: module 'module' has no attribute 'func3'
>>> from module import func3 # 无效
ImportError: cannot import name 'func3'
# 使用 importlib.reload(module) 重新导入
>>> improt importlib
>>> importlib.reload(module)
>>> module.func3()
module
- 主程序在模块所在目录的父(或祖辈)目录。
folder:
– test.py
– package:
—- module.py
test.py1
2
3
4
5def func1() :
print('Hello World!')
def func2() :
print('Python3')
module.py1
2
3
4
5def func1() :
print('Python3')
def func2() :
print('Hello World!')
首先,要模块所在的目录(Package,包)创建一个 init.py 文件。然后再 import:1
2
3>>> import package.module # Import 整个 module.py,要用点分连接 Package 和 Module
>>> package.module.func1() # 调用是要完整的 package.module.func() 模式
Python3
1 | >>> from package.module import func1() # 这种方式 import 只需要 module.py 文件下的func |
+
sys.path是python的搜索模块的路径集,是一个list。可以在python 环境下使用sys.path.append(path)添加相关的路径,但在退出python环境后自己添加的路径就会自动消失了!
使用下面方法将路径永久添加到sys.path:
方法一:使用pth文件,在 /Lib/site-packages文件中创建.pth文件,将模块的路径写进去,一行一个路径,
方法二:使用PYTHONPATH环境变量,在这个环境变量中输入相关的路径,不同的路径之间用逗号(英文的)分开,如果PYTHONPATH 变量还不存在,可以创建它!
远程目录通过分布式文件系统挂载后,找出路径用上述方法即可。
1 | 需要解决一个问题,避免由于之前存在一个同名模块导致加载失败 |