Python sys.path

时间:2013-01-28 02:19:30

标签: python

如果我在python中有以下文件结构:

    directory1
    ├── directory2
    │   └── file2
    └── file1

其中目录2是目录1的子目录,并假设它们都不是包,如果我使用sys.path,如何从file2引用file1模块?我在文件2中使用了什么import语句,假设我在文件1中有x = 1并且我想在file2中打印出x的值?

2 个答案:

答案 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