2013-07-20 54 views
3

我有几个Python包,我想保留在单独的文件系统上,但不幸的是共享相同的顶级模块名称。在不同目录中保留具有相同顶级名称的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中的先到者为准)。

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

+2

是的,有一种方法,它叫做 “命名包”。 http://stackoverflow.com/questions/1675734/how-do-i-create-a-namespace-package-in-python请注意,如果你这样做,'top'包必须是空的,该名称空间不能包含除sub1和sub2软件包以外的任何内容。 –

回答

0

有几种选择,其中之一是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

相关问题