gpt4 book ai didi

python - 从隐藏目录(包)导入模块

转载 作者:行者123 更新时间:2023-11-28 20:25:45 30 4
gpt4 key购买 nike

我最近将一个 Django 项目从 sqlite3 切换到了 postgres。我想从隐藏目录中的模块读取数据库密码。

.secrets
__init__.py
db.py # DB_PASSWORD = 'mypassword'

如何从位于隐藏的 .secrets 目录中的 db 模块导入 DB_PASSWORD?以下不起作用(ImportError):

from .secrets.db import DB_PASSWORD

我必须使用 __import__ 技巧吗?对于代码样式约定,我更愿意使用 from/import 模式。

最佳答案

来自 PEP 328,http://www.python.org/dev/peps/pep-0328/#rationale-for-relative-imports实际上应该避免命名以“点”开头的 python 模块,因为它在 Python 中表示相对导入。

如果你真的坚持这样做,你可以,但你必须使用 imp 模块。

示例用法:-

import imp
with open('.secret/__init__.py', 'rb') as fp:
secret = imp.load_module('.secret', fp, '.secret/__init__.py', \
('.py', 'rb', imp.PY_SOURCE))

因此对于您想要从 db.py 加载值的用例,它看起来像这样:-

import imp
with open('.secret/db.py', 'rb') as fp:
db = imp.load_module('.secret', fp, '.secret/db.py', \
('.py', 'rb', imp.PY_SOURCE))

print db.DB_PASSWORD # This will print out your DB_PASSWORD's value. Or use it whichever way you want.

虽然不会就此提出建议。

关于python - 从隐藏目录(包)导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14087011/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com