如果我在 python 中有以下文件结构:
directory1
├── directory2
│ └── file2
└── file1
其中目录 2 是目录 1 的子目录,并且假设两者都不是包,假设我使用的是 sys.path,如何从 file2 引用 file1 模块?假设我在文件 1 中有 x=1 并且我想打印出文件 2 中 x 的值,我将在文件 2 中使用什么导入语句?
如果我在 python 中有以下文件结构:
directory1
├── directory2
│ └── file2
└── file1
其中目录 2 是目录 1 的子目录,并且假设两者都不是包,假设我使用的是 sys.path,如何从 file2 引用 file1 模块?假设我在文件 1 中有 x=1 并且我想打印出文件 2 中 x 的值,我将在文件 2 中使用什么导入语句?
如果 directory1 和 directory2 都是sys.path
绝对路径,无论一个是另一个的子目录,那么您可以使用简单的语句导入这两个文件(我假设它们至少以 .py 扩展名命名):
# in file 1:
import file2
# in file 2:
import file1
然后你可以像往常一样访问内容:
# in file 2
import file1
print file1.x
如果您需要sys.path
在 file2 中进行设置,请使用以下内容:
# in file 2
import sys
import os.path
path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0,path)
import file1
print file1.x
└── directory1
├── directory2
│ └── file2.py
└── file1.py
$ cat directory1/file1.py
x=1
$ cat directory1/directory2/file2.py
import sys
from os.path import dirname, realpath
sys.path.append(dirname(realpath(__file__)) + '/..')
sys.path.append('..')
from file1 import x
print x
$ python directory1/directory2/file2.py
1