我正在尝试编写执行以下操作的代码:
我知道这是在脚本 C 中运行函数 A 的低效方法,但我这样做主要是为了更好地理解 python 导入系统。
这是我写的测试:
目录:
Init_Package_Import
Domain
app
app.py
lib
__init__.py
Framework
__init__.py
client.py
Init_Package_Import/Framework/_init_.py的内容:
# Init_Package_Import/Framework/_init_.py
Init_Package_Import/Framework/client.py 的内容:
# Init_Package_Import/Framework/client.py:
def hi_client():
print("Hi Client")
Init_Package_Import/Domain/lib/_init_.py的内容:
# Init_Package_Import/Domain/lib/__inti__.py:
import sys
sys.path.insert(0, 'Init_Package_Import')
from Framework import client as client
Init_Package_Import/Domain/app/app.py 的内容:
# Init_Package_Import/Domain/app/app.py:
sys.path.insert(0, 'Init_Package_Import/Domain')
# import method 1 - works
from lib import client as client1
# import method 2 - throws error
import lib.client as client2
当我运行
python3 Init_Package_Import/Domain/app/app.py
时,出现 ModuleNotFoundError: No module named 'lib.client'
错误。为什么第一次导入有效而第二次无效?
from x import y
在函数级别结束
但是
import x.y
仅支持文件级别