如何处理项目中的常见依赖项?
假设我使用某些模块pack
和mod1
创建了一个包[{1}}。所有模块都需要使用一些通用的外部模块。例如:
mod2
我也想在主代码中使用相同的外部模块:
mod1.py:
import sys
import numpy
# define stuff
mod2.py:
import numpy
# define more stuff
在这种情况下,我似乎有多个main.py:
import sys
import numpy
import pack
# do the stuff
和numpy
的副本,即:
sys
这看起来很糟糕。我真的有多个numpy
pack.mod1.numpy
pack.mod2.numpy
或者我有一个numpy
有三个名字吗?有没有办法避免这种事情?在这种情况下,最佳做法是什么?
答案 0 :(得分:2)
无需担心,模块中的代码只有在第一个模块导入时才会执行一次。当您在第二个模块中导入它时,您只需获得已经缓存的模块的“指针”。
快速演示:
# mod1.py
print 'starting mod1'
import mod3
print 'finished mod1'
# mod2.py
print 'starting mod2'
import mod3
print 'finished mod2'
# mod3.py
print 'in mod3'
结果:
In [2]: import mod1
starting mod1
in mod3
finished mod1
In [3]: import mod2
starting mod2
finished mod2