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

PythonDocsのモジュールに関するセクション全体があります。

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 に答える