Pao*_*olo 2 python import hidden module
我最近将Django项目从sqlite3切换到了postgres。我想从隐藏目录中的模块读取db密码。
.secrets
__init__.py
db.py # DB_PASSWORD = 'mypassword'
Run Code Online (Sandbox Code Playgroud)
如何从隐藏在.secrets目录中的db模块中导入DB_PASSWORD?以下无效(ImportError):
from .secrets.db import DB_PASSWORD
Run Code Online (Sandbox Code Playgroud)
我必须使用__import__技巧吗?对于代码样式约定,我希望保留from / import模式。
从PEP 328,http: //www.python.org/dev/peps/pep-0328/#rationale-for-relative-imports中,您实际上应该避免命名以“点”开头的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))
Run Code Online (Sandbox Code Playgroud)
因此,对于要从中加载值的用例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.
Run Code Online (Sandbox Code Playgroud)
虽然不会建议。
| 归档时间: |
|
| 查看次数: |
3316 次 |
| 最近记录: |