从 Python 包中的根 __init__.py 导入变量

Import Variable from root __init__.py in a Python Package

我有一个 __init__.py 文件,我在我的包中声明了以下内容。

代码如下:

from __future__ import absolute_import
from __future__ import division
from . import web
IGNORE_SSL_ERRORS = False

我的项目结构包含许多子级包,如上面提到的 web。这是基本结构:

dynamical (root package)
   -> __init__.py
   -> web
      -> __init__.py
      -> _func.py

为了便于用户使用,我希望像 IGNORE_SSL_ERRORS 这样的项目级常量公开给个人可以设置脚本以针对不安全的站点工作以测试那里的代码。

我在将变量 IGNORE_SSL_ERRORS 导入到 _func.py 时遇到问题。

因为它在包的根目录下,我该如何导入它?

from .. import IGNORE_SSL_ERRORS

似乎失败了。

谢谢

您可以使用 sys.path.append().

将根包文件夹简单地添加到 sys.path

所以在你的 _func.py 文件中你可以使用这个:

if __name__ == '__main__' and __package__ is None:
    from os import sys, path
    pth = path.dirname(path.dirname(path.dirname(path.abspath(__file__))))
    sys.path.append(pth)  # pth is your 'dynamical' folder
    from dynamical import IGNORE_SSL_ERRORS

希望对您有所帮助!