3

我有几个 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)。

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

4

1 回答 1

1

有几种选择,其中之一是imp

import imp

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

我的来源


另一个是与importlib

相对的:

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

绝对:

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

我的来源

于 2015-03-30T20:09:12.797 回答