假设我有一个文件夹结构,看起来像这样:蟒子文件夹导入混乱
.
├── A
│ ├── a.py
│ └── b.py
└── main.py
的文件具有以下内容:
b.py:
class BClass:
pass
a.py :
from b import BClass
main.py:
from A import a
如果我运行python3.3 A/a.py
或python3.3 B/b.by
,没有错误。但是,如果我跑python3.3 main.py
,出现以下错误:
Traceback (most recent call last):
File "main.py", line 1, in <module>
from A import a
File "/tmp/python_imports/A/a.py", line 1, in <module>
from b import BClass
ImportError: No module named 'b'
改变进口线a.py到import A.b
作品,但显然python3.3 A/a.py
会失败呢。我实际上并不想运行python3.3 A/a.py
,但我希望模块可以从多个位置导入。因此,a.py应该导入b.py,而不管a.py的输入位置。
如何解决此问题?
制作包并使用绝对导入。请参阅http://blog.habnab.it/blog/2013/07/21/python-packages-and-you/以获得一个很好的介绍。 –
你在'A'目录中有'__init __。py'吗? – Alfe
'b.py'真的从自己导入('from b ...')还是错字? – Alfe