考虑:
stuff/
__init__.py
mylib.py
Foo/
__init__.py
main.py
foo/
__init__.py
script.py
script.py
想要进口mylib.py
.
这只是一个示例,但实际上我只想在父目录中进行模块的相对导入。我尝试了各种方法并收到此错误......
Attempted relative import beyond toplevel package
我在某处读到程序启动的脚本不应驻留在包中,并且我尝试修改其结构,如下所示......
stuff/
mylib.py
foo.py // Equivalent of main.py in above
foo/
__init__.py
script.py
但我得到了同样的错误。
我怎样才能做到这一点?这是否是一个适当的方法?
在Python 2中。
经过一番摆弄后,我意识到如何设置它,并且为了具体起见,我不会使用 foo bar 名称。我的项目目录设置为...
tools/
core/
object_editor/
# files that need to use ntlib.py
editor.py # see example at bottom
__init__.py
state_editor/
# files that need to use ntlib.py
__init__.py
ntlib.py
__init__.py # core is the top level package
LICENSE
state_editor.py # equivalent to main.py for the state editor
object_editor.py # equivalent to main.py for the object editor
一行在object_editor.py
好像...
from core.object_editor import editor
一行在editor.py
好像...
from .. import ntlib
或者替代地
from core import ntlib
关键是在我在问题中给出的示例中,“主”脚本是从包内运行的。一旦我将其移出,就创建了一个特定的包(core
),并移动了我希望编辑共享的库(ntlib
)到那个包裹里,一切都很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)