使用自定义查找导入模块

时间:2014-03-21 12:25:04

标签: python import

我的项目结构存在一些问题 由于历史原因,项目看起来像这样:

Source/
    __init__.py
    module1/
        __init__.py
        script1.py
    module2/
        __init__.py
        script2.py

在生产中它像这样部署

server/
    __init__.py
    module1/
        __init__.py
        script1.py
    module2/
        __init__.py
        script2.py

问题是script2.py有这样的导入:

from server.module1.script1 import something

是否可以说python来搜索server.***而不是server/***但是Source/***

现在我用符号链接做了这个,但看起来很难看

1 个答案:

答案 0 :(得分:1)

您始终可以在sys.modules字典中添加密钥;这些作为模块的别名:

import sys

try:
    import server
except ImportError:
    import Source
    sys.modules['server'] = Source

一旦serversys.modules中的条目,就会找到所有子模块和包,并且server条目将被用作进一步导入的起点。< / p>