Python 从_init__u; py.py中的相对位置导入单独的模块

Python 从_init__u; py.py中的相对位置导入单独的模块,python,import,module,Python,Import,Module,我知道在这几页中有一个类似的问题得到了令人作呕的回答,但我已经阅读了所有的答案,并且找不到一个解决方案来让我的细微差别的应用程序工作。长与短: 我想向我的工作模块公开一个外部模块(它只存在于相对路径中,并且我无法更新路径变量)。在每种情况下,我都可以使用sys.path.append()/import导入模块。但是,我想在我的_uinit__u; py.py中导入模块,并将其公开给那里的模块(因此理论上,我只需要调整一次路径)。我读到的所有内容都表明,一旦我通过_init__uuu.py中的导入

我知道在这几页中有一个类似的问题得到了令人作呕的回答,但我已经阅读了所有的答案,并且找不到一个解决方案来让我的细微差别的应用程序工作。长与短:

我想向我的工作模块公开一个外部模块(它只存在于相对路径中,并且我无法更新路径变量)。在每种情况下,我都可以使用sys.path.append()/import导入模块。但是,我想在我的_uinit__u; py.py中导入模块,并将其公开给那里的模块(因此理论上,我只需要调整一次路径)。我读到的所有内容都表明,一旦我通过_init__uuu.py中的导入公开了模块,我就应该能够通过像我的_module.imported_module这样的调用来访问它。然而,这似乎不起作用。其基本思想是跨多个模块共享一组功能,这些功能也应该是独立的。示例如下:

(基本模块):

NameError:未定义名称“core”

或者:

myfile:
import base
print dir(base.core)
AttributeError:“模块”对象没有属性“核心”

最后:

myfile:
import base.core
print dir(base.core)
myfile:
import core
print dir(core)
ImportError:没有名为core的模块

**最后,最后:

最后:

myfile:
import base.core
print dir(base.core)
myfile:
import core
print dir(core)
ImportError:没有名为core的模块


有什么想法吗?

您在这里没有选择的余地,如果它是主模块之外目录中的相对路径,您将不得不操纵该路径。您应该将sys.path操作更改为使用
\uuuuu文件\uuuu
,这样您就不会直接绑定到当前工作,即:

import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(__file__))
但是,如果另一个包与您的文件共享一个包,则可以使用相对导入:

parent/
    __init__.py
    core.py
    base/
        __init__.py
        myfile.py

您也可以在
.pythonrc
中或使用ipython设置来执行此路径操作。

我注意到,在uu init_u; py.py中添加sys.path.append('../'),(或其更类似于python的)实际上允许您在myfile中“导入核心”,前提是sys.path.append调用在“导入myfile”调用之前。那是我的问题。如果顺序正确,我的示例#4确实有效。@drewmiller-对,但是如果您试图将包导入到包含包的myfile的顶级目录之外的其他地方,它将中断。