import xxx
这个语句。
废话少说,先讲问题
|– A
|– alpha.py
|– beta.py
|– B
|– theta.py
|– main
|– main.py
from B import theta
File “main/main.py”, line 1, in <module>
from B import theta
ModuleNotFoundError: No module named ‘B’

import
的查找路径
1. 查找是否已导入同名模块

>>> sys.modules
{‘sys’: <module ‘sys’ (built-in)>, ‘builtins’: <module ‘builtins’ (built-in)>, …’re’: <module ‘re’ from ‘E:\Anaconda\Anaconda\lib\re.py’>, …}
2. 在特定路径下查找对应模块



sys.path
维护的就是这样一个py交易的结果~~(诶?好像莫名发现了什么),其中保存的内容就是这几家“指定酒楼”,也就是当Python遇到不认识的儿子~~模块时,就会去实地查找的路径。[”, ‘E:\Anaconda\Anaconda\python37.zip’, ‘E:\Anaconda\Anaconda\DLLs’, ‘E:\Anaconda\Anaconda\lib’, ‘E:\Anaconda\Anaconda’, ‘E:\Anaconda\Anaconda\lib\site-packages’, ‘E:\Anaconda\Anaconda\lib\site-packages\win32’, ‘E:\Anaconda\Anaconda\lib\site-packages\win32\lib’, ‘E:\Anaconda\Anaconda\lib\site-packages\Pythonwin’]
3. 将模块与名字绑定
import
走天下:import os
import requests
requests
这个模块,那么很显然在之后的程序流程中,我们都不能使用requests
这个名字来调用它而应当使用req
。>>> import sys as sy
>>> sys.path
[”, ‘E:\Anaconda\Anaconda\python37.zip’, ‘E:\Anaconda\Anaconda\DLLs’, ‘E:\Anaconda\Anaconda\lib’, ‘E:\Anaconda\Anaconda’, ‘E:\Anaconda\Anaconda\lib\site-packages’, ‘E:\Anaconda\Anaconda\lib\site-packages\win32’, ‘E:\Anaconda\Anaconda\lib\site-packages\win32\lib’, ‘E:\Anaconda\Anaconda\lib\site-packages\Pythonwin’]
>>> sy.path
[”, ‘E:\Anaconda\Anaconda\python37.zip’, ‘E:\Anaconda\Anaconda\DLLs’, ‘E:\Anaconda\Anaconda\lib’, ‘E:\Anaconda\Anaconda’, ‘E:\Anaconda\Anaconda\lib\site-packages’, ‘E:\Anaconda\Anaconda\lib\site-packages\win32’, ‘E:\Anaconda\Anaconda\lib\site-packages\win32\lib’, ‘E:\Anaconda\Anaconda\lib\site-packages\Pythonwin’]
>>> sys == sy
True
问题解决
import A
导入模块A,用import B
导入模块B。|– A
|– alpha.py
|– beta.py
|– B
|– theta.py
|– main
|– main.py
sys.path
中去嘛。说起来也跟PyCharm做的事没差呀sys
和os
两个模块七搞八搞(这两个模块以前有过介绍,不再赘述)——print(“name: “ + __name__)
print(“file: “ + __file__)
def al():
print(“Importing alpha succeeded.”)
main.py
中则加入一个逻辑,在sys.path
中增加一个项目根目录:import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
import A.alpha
A.alpha.al()
# name: A.alpha
# file: *Project_exampleAalpha.py
# Importing alpha succeeded.
总结
参考资料
https://docs.python.org/zh-cn/3/reference/import.html