Python 将同一个包导入本地包的多个模块
我为我正在编写的Flask应用程序提供了一个本地“models”包,其中每个模型类都位于自己的.py文件中,“models”dir有一个(除版本信息外,当前为空)文件Python 将同一个包导入本地包的多个模块,python,import,package,Python,Import,Package,我为我正在编写的Flask应用程序提供了一个本地“models”包,其中每个模型类都位于自己的.py文件中,“models”dir有一个(除版本信息外,当前为空)文件\uu init\uuuuuuuuuuuuuuuuuuuuuupy以便我可以导入它。 此设置工作正常,但每个模块当前都导入sqlite3以执行数据库操作是否有一种方法可以使用单个导入语句,例如在\uuuu init\uuuu.py中,而不需要在每个单独的模块中使用语句? 我创建了一个非常简单的本地包,看看我是否可以自己实现它,但这不
\uu init\uuuuuuuuuuuuuuuuuuuuuupy
以便我可以导入它。此设置工作正常,但每个模块当前都导入sqlite3以执行数据库操作是否有一种方法可以使用单个导入语句,例如在
\uuuu init\uuuu.py
中,而不需要在每个单独的模块中使用语句?
我创建了一个非常简单的本地包,看看我是否可以自己实现它,但这不起作用:
package-test/
testpkg/
__init__.py
one.py
其中\uuuu init\uuuuuuuuuuuuuuuuuuuupy
包含从日期时间导入日期为dt
,而one.py
包含:
def sayDate():
return dt.today()
当我从包test dir运行REPL时,我可以从testpkg导入一个没有问题,但是运行one.sayDate()
返回未定义名称“dt”
更一般地说,例如在\uu init\uuuuuuuuupy
中执行import datetime
,并在模块的函数定义中说return datetime.date.today()
返回名称“datetime”未定义
或者有没有更好的方法来避免在多个模块中导入相同的内容
谢谢大家! 您不必担心多次导入一个模块。导入的模块缓存在sys.modules
中,而导入sqlite3
的实际过程只会发生一次。我不知道,但我认为Python会足够聪明地做到这一点。如果知道是否可以在某个地方使用一条适用于包中每个模块的import语句,那就太好了。