【问题标题】:Python : Import modules once then share with several filesPython:导入模块一次,然后与多个文件共享
【发布时间】:2016-05-24 03:19:12
【问题描述】:

我有如下文件,

file1.py
file2.py
file3.py

假设这三个都使用

lib7.py
lib8.py
lib9.py

目前这三个文件各有一行

import lib7
import lib8
import lib9

如何设置我的目录/代码,以便库只导入一次,然后在三个文件之间共享?

【问题讨论】:

  • 查看this answer 并考虑创建一个mylib.py 文件来导入所有三个库,然后通过__all__ 发布您想要的符号。
  • 如果您担心模块在同一个文件中被多次导入,Python 只会将导入的文件加载到命名空间中一次。不会加载同一文件的任何后续导入。
  • @hhbilly 不知道,谢谢!这是我担心的一部分。另一个是重复代码。

标签: python python-import


【解决方案1】:

每个文件至少要导入一次。但是您可以将其设置为单个导入行:

可能最干净的方法是创建一个文件夹lib,将所有lib?.py 移到其中,然后向其中添加一个名为__init__.py 的空文件。

通过这种方式,您可以从您的 lib?.py 文件中创建一个 package。然后可以这样使用:

import lib
lib.lib7

根据您想要结束的位置,您可能还希望在__init__.py 中有一些代码:

from lib7 import *
from lib8 import *
from lib9 import *

通过这种方式,您可以在单个 import lib 中从单个 lib?.py 获取所有符号:

import lib
lib.something_from_lib7

【讨论】:

    【解决方案2】:

    将它们中的每一个导入单独的模块中,然后导入:

    lib.py:

    import lib7
    import lib8
    import lib9
    

    在每个文件(file1.pyfile2.pyfile3.py)中,只需使用import lib。当然,您必须使用lib.lib7 来引用它们——为避免这种情况,您可以使用from lib import *

    【讨论】:

      猜你喜欢
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多