如果我在python中有以下文件结构:
directory1
├── directory2
│ └── file2
└── file1
其中目录2是目录1的子目录,并假设它们都不是包,如果我使用sys.path,如何从file2引用file1模块?我在文件2中使用了什么import语句,假设我在文件1中有x = 1并且我想在file2中打印出x的值?
答案 0 :(得分:1)
如果directory1和directory2都在sys.path
作为绝对路径,无论一个是否是另一个的子目录,那么你可以用简单的语句导入这两个文件(我假设它们已被命名为。 py扩展至少):
# in file 1:
import file2
# in file 2:
import file1
然后你会像往常一样访问内容:
# in file 2
import file1
print file1.x
如果您需要在file2中设置sys.path
,请使用以下内容:
# 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
答案 1 :(得分:0)
└── 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