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

标签 python import module hidden

我最近将一个 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/

相关文章:

python - 使用单独的 python 函数导入依赖项

module - 如何制作一个其元素是函数的矩阵,对它们进行运算并且结果仍然是函数?

python - SQLAlchemy(Postgresql) - 竞争条件

python - 在python范围内查找素数

python - absolute_import 无法正常工作(在 celery 项目中)

ios - 在 Objective C 类中使用 Swift 类和 swift 项目

javascript - 如何修复 'import declarations may only be on top level` ECMAScript 导入错误

javascript - module.exports 的 nodejs 缓存问题

python - 简单的URL映射问题

javascript - Angular JS 1 - 添加框架时出错