在不同的目录中保持Python包具有相同的顶级名称

时间:2013-07-20 05:51:13

标签: python python-2.7 python-import python-module pythonpath

我有几个Python包,我想保留在不同的文件系统上,但遗憾的是它们共享相同的顶级模块名称。

为了说明,目录结构如下所示:

/fs1
  /top
    __init__.py
    /sub1
      __init__.py

/fs2
  /top
    __init__.py
    /sub2
      __init__.py

在Python 2.7中,有什么办法可以设置我的PYTHONPATH,以便我可以将top.sub1top.sub2导入到同一个脚本中吗?同时添加/fs1/fs2不起作用,因为它只允许导入两个子模块中的一个(以PYTHONPATH中的第一个为准)。

我可以将两棵树复制/符号链接成一个,但出于实际原因,我宁愿不这样做。

1 个答案:

答案 0 :(得分:1)

有几个选项,其中一个是imp

import imp

foo = imp.load_source('module.name', '/path/to/file.py')
foo.MyClass()

my source


另一个是importlib

相对

importlib.import_module('.sub1', 'fs1.top')

绝对值:

importlib.import_module('fs1.top.sub1')

my source