【发布时间】:2018-11-02 17:29:59
【问题描述】:
我有一个奇怪的 Python 导入,我无法让它与其他讨论中的任何建议一起使用。
我目前正在向其他人的模块添加一个小脚本,因此我无法更改文件结构或任何现有代码,这使得事情变得困难。
这是一个包含一堆类的python脚本示例:
/path/to/root/directory/aaa/bbb/ccc/utils.py
当前开发者按如下方式导入:
from aaa.bbb.ccc import utils
utils.SomeClass.someMethod()
树中的所有目录都有一个__init__.py 文件
现在我想在外部调用模块如下:
import sys
sys.path.append('/path/to/root/directory')
from aaa.bbb.ccc import utils
utils.SomeClass.someMethod()
这不起作用,并给出以下错误:
from aaa.bbb.ccc import utils
ImportError: No module named ccc
但是,稍微更改导入确实有效:
import sys
sys.path.append('/path/to/root/directory')
from aaa.bbb.ccc.utils import *
SomeClass.someMethod()
我不明白为什么第二个有效而不是第一个。同样,我无法更改现有代码,因此以下 2 条语句必须与我的 sys.path.append 和导入一起使用:
from aaa.bbb.ccc import utils
utils.SomeClass.someMethod()
我无法从utils.SomeClass 中删除utils
有谁知道我如何做到这一点?
【问题讨论】:
-
你能试试
from aaa.bbb import ccc,然后是from ccc import utils吗?只是好奇这是否能让你有所收获。 -
或者
from aaa.bbb import ccc.utils as utils? -
您的
sys.path是什么样的?也许尝试预先挂起/path/to/root/directory而不是追加 - 是否有可能在path中有另一个模块aaa.bbb在您之前找到,并且可能缺少一些__init__.py文件或没有没有ccc? -
from aaa.bbb import ccc.utils as utils不起作用,给出 Python 语法错误 -
from aaa.bbb import ccc后跟from ccc import utils也不起作用:from ccc import utils ImportError: No module named ccc
标签: python import python-import sys