3

如果我有以下目录结构:

parent/
    - __init__.py
    - file1.py
    - child/
        - __init__.py
        - file2.py

在文件 2 中,我将如何导入文件 1?

更新

>>> import sys
>>> sys.path.append(sys.path.append('/'.join(os.getcwd().split('/')[:-2])))
>>> import parent
>>> ImportError: No module named parent
4

4 回答 4

8

您需要指定父级,并且它需要位于 sys.path

import sys
sys.path.append(path_to_parent)
import parent.file1
于 2012-04-09T19:15:47.223 回答
5

您仍然需要提及父级,因为它们位于不同的命名空间中:

import parent.file1
于 2012-04-09T19:04:20.147 回答
0

Python Docs 上有一个关于模块的完整部分:

Python 2: http ://docs.python.org/tutorial/modules.html

Python 3: http ://docs.python.org/py3k/tutorial/modules.html

在两者中,请参阅第 6.4.2 节以了解父包的特定导入(以及其他包)

于 2012-04-09T19:45:47.223 回答
-1

这是我用来导入任何东西的东西。当然,您仍然必须将此脚本复制到本地目录,导入它以及use您想要的路径。

import sys
import os

# a function that can be used to import a python module from anywhere - even parent directories
def use(path):
    scriptDirectory = os.path.dirname(sys.argv[0])  # this is necessary to allow drag and drop (over the script) to work
    importPath = os.path.dirname(path)
    importModule = os.path.basename(path)
    sys.path.append(scriptDirectory+"\\"+importPath)        # Effing mess you have to go through to get python to import from a parent directory

    module = __import__(importModule)
    for attr in dir(module):
        if not attr.startswith('_'):
            __builtins__[attr] = getattr(module, attr)
于 2012-10-16T00:02:43.220 回答