在我的应用中,我有一个model
文件夹/包。
在该模型文件夹中,我通常有一大堆import语句(大多数来自SQLAlchemy,例如String, Integer, Session
等。
我发现自己一次又一次地为User, Blog, Article, Etc.
这样的东西编写相同的导入语句,并且变得非常草率。
了解显性优于隐式,然后继续并且忽略它,有没有办法做到这一次?
答案 0 :(得分:4)
这可能不是你想要的,但谁知道
from sqlalchemy import Model,String,...
在其他脚本中只需
from common_imports import *
[编辑] 实际上我想出了一个非常糟糕和黑客的方式来做你想做的事
一种真正的hacky方式可能就像
\root_of_package
-main.py
\models
-__init__.py
-model1.py
-model2.py
然后在models\__init__.py
from sqlalchemy import String,Integer,...
from glob import glob
Base = ...
for fname in glob("%s/*.py"%dirname(__file__)):
with open(fname) as f:
eval(f.read())
__all__ = locals()
然后在models/model1.py
#just use all the imports/locals from __init__.py as if they already existed
#this will be hellish if you use an IDE that checks for errors for you
class Model1(Base):
id = Column(Integer,primary_key=True)
...
然后在main.py
from models import Model1
答案 1 :(得分:4)
我在我的一个应用程序中执行此操作。
# approot/m.py
from models.model import String, Integer, Session, (etc)
# Otherwise blank!
然后在其他一切:
import m
然后你可以m.String
,m.Integer
,m.Session
等等。这也意味着我可以进一步封装我的代码,以便以后当我编写用户模型时我可以添加到m.py
from models.user import User, Group, PermissionSet
并继续访问m.User
,m.Group
等