为什么从库导入模块(从另一个库导入)不起作用?

问题描述 投票:0回答:1

我正在尝试编写执行以下操作的代码:

  1. 将库 A 中的模块 A 导入库 B 作为模块 A/B(同名)。
  2. 将模块 A/B 从库 B 作为模块 A/B 导入脚本 C。
  3. 从脚本 C 中的模块 A/B 运行函数 A。

我知道这是在脚本 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'
错误。为什么第一次导入有效而第二次无效?

python import python-import
1个回答
0
投票

from x import y
在函数级别结束

但是

import x.y
仅支持文件级别

© www.soinside.com 2019 - 2024. All rights reserved.