【发布时间】:2018-09-10 14:05:06
【问题描述】:
免责声明:在搜索了大量非常相似的提要后,最终都解决了一个略有不同的问题,我想我必须提出一个新问题(尽管我确信存在在某处回答->如果您知道,请指出;)
问题:我正在使用 Python 2,正在用这棵树构建一个项目:
project
├── __init__.py
├── foo
│ └── __init__.py
│ └── bar
│ └── __init__.py
├── notebooks
│ └── __init__.py
│ └── skript.py
└── test
└── __init__.py
└── foo
└── __init__.py
└── bar
└── __init__.py
└── file.py
现在我想从project/notebooks/skript.py 中加载 test.foo.bar。因此,我在那个脚本中做
import sys
sys.path.append('../')
如果我然后运行
import test.foo.bar # or: import test.foo
python 告诉我
ImportError: No module named foo.bar
(或分别为ImportError: No module named foo)。有趣的是,import test 不会抛出错误,但如果我再这样做 test.foo 它会抛出 AttributeError: 'module' object has no attribute 'foo'。
所以我想知道,这里出了什么问题以及如何解决它?
编辑
另外,我尝试将此添加到skript.py
import sys
import os
MYDIR = os.path.dirname(os.path.abspath(__file__))
sys.path.append(os.path.join(MYDIR,'../test'))
sys.path.append(os.path.join(MYDIR,'../test/foo'))
sys.path.append(os.path.join(MYDIR,'../test/foo/bar')) #I am not sure this is entirely needed
如下所述。不过,
import test.foo.bar.file
或 从 test.foo.bar 导入文件 只是屈服
ImportError: No module named foo.bar
sys.path.append('../test/foo/bar')
import test.foo.bar.file
我仍然不知道出了什么问题?
【问题讨论】:
-
如果您将
../路径附加到python 路径,您将附加project路径,而不是bar模块所在的路径,您应该添加./test/foo/bar路径。 -
您的错误只抱怨
foo.bar,而不是test.foo.bar。test是否明确导入foo.bar?
标签: python python-import