繁体   English   中英

Python 3:如何从包中的模块导入__init__.py?

[英]Python 3: How do I import __init__.py from a module in its package?

我使用的是Python 3.7。 我创建了一个foo模块,它具有以下文件夹布局:

foo/
    __init__.py

我将foo软件包的所有代码都放在__init__.py文件中。 我可以正常运行其他脚本中的import foo

稍后,我想向该软件包添加一个util.py文件。 文件夹布局变为:

foo/
    __init__.py
    util.py

我的问题是:在util.py中 ,我想访问__init__.py中定义的类,函数等。 如何从util.py文件中“导入” __init__.py 这有可能吗? 如果必须重新排列我的代码,那怎么办?

我尝试将以下内容添加到util.py中

from . import __init__
print(__init__.some_var_in_init)

但我收到此错误消息:

Traceback (most recent call last):
  File "util.py", line 3, in <module>
    print(__init__.some_var_in_init)
AttributeError: 'method-wrapper' object has no attribute 'some_var_in_init'

所以我想这不是解决之道。

import foo可以正常工作。

我找到了答案。 添加import foo是不够的,但是还必须添加父文件夹:

import os, sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

import foo
print(foo.some_var_in_init)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM