Python:导入“导入文件”

时间:2011-06-01 18:52:27

标签: python python-import

我正在导入很多不同的脚本,所以在我的文件的顶部,它会被import语句混乱,即:

from somewhere.fileA import ...
from somewhere.fileB import ...
from somewhere.fileC import ...
...

有没有办法将所有这些移动到其他地方,然后我所要做的就是导入该文件,这样它只是一个干净的导入?

2 个答案:

答案 0 :(得分:20)

我强烈反对你想做什么。你在做global include file mistake again。虽然只有一个模块正在导入所有模块(而不是导入全局模块的所有模块),但剩下的一点是,如果有一个有效的理由要以通用名称收集所有这些模块,那很好。如果没有理由,那么它们应该作为单独的包含。原因是文件。如果我打开您的文件,并且只看到一个导入,我不会获得有关导入内容和来源的信息。另一方面,如果我有进口清单,我一眼就知道需要什么,不需要什么。

另外,我假设你正在做的另一个重要错误。当你说

from somewhere.fileA import ...
from somewhere.fileB import ...
from somewhere.fileC import ...

我假设你要导入一个类,比如这个

from somewhere.fileA import MyClass
这是错的。这种替代解决方案要好得多

 from somewhere import fileA 

 <later>

 a=fileA.MyClass()

为什么呢?原因有两个:第一,命名空间。如果你有两个模块有一个名为MyClass的类,你就会发生冲突。第二,文件。假设您使用第一个选项,我在您的代码中找到以下行

 a=MyClass()

现在我不知道这个MyClass来自哪里,为了找到它,我将不得不围绕你的所有文件。通过模块名称对其进行限定,我可以立即了解它的来源,并通过/ search立即找到来自fileA模块的内容在您的程序中使用。

最后说明:当你说“fileA”时你犯了一个错误。有模块(或包),而不是文件。模块映射到文件,包映射到目录,但它们也可能映射到egg文件,甚至可能创建一个根本没有文件的模块。这是概念的命名,这是一个横向问题。

答案 1 :(得分:7)

当然有;只需在主文件所在的同一目录中创建一个名为myimports.py的文件,然后将导入文件放在那里。然后,您只需在主脚本中使用from myimports import *