如何避免python中的共享模块依赖

时间:2014-04-29 20:06:51

标签: python python-3.x

如何处理项目中的常见依赖项?

假设我使用某些模块packmod1创建了一个包[{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有三个名字吗?有没有办法避免这种事情?在这种情况下,最佳做法是什么?

1 个答案:

答案 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