Python sys.path路径
如果我在Python中有以下的文件结构:
directory1
├── directory2
│ └── file2
└── file1
这里的目录2是目录1的子目录,并且假设这两个目录都不是包,那么我该如何在文件2中引用文件1的模块呢?假设我在文件1中有一个变量x=1,我想在文件2中打印出x的值,我应该在文件2中写什么导入语句呢?
2 个回答
0
└── directory1
├── directory2
│ └── file2.py
└── file1.py
x=1
import sys
from os.path import dirname, realpath
sys.path.append(dirname(realpath(__file__)) + '/..')
sys.path.append('..')
from file1 import x
print x
1
这个命令是用来查看一个文件的内容。这里的“cat”是一个用来显示文件内容的命令。
第一行命令是查看“directory1”文件夹里的“file1.py”这个文件的内容。
第二行命令是查看“directory1”文件夹里的“directory2”子文件夹中的“file2.py”文件的内容。
第三行命令是用Python来运行“directory1/directory2/file2.py”这个文件,也就是执行这个文件里的代码。
1
如果目录1和目录2都在 sys.path
中,并且都是绝对路径,不管其中一个是否是另一个的子目录,你都可以用简单的语句来导入这两个文件(我假设它们的文件名后缀至少是 .py):
# in file 1:
import file2
# in file 2:
import file1
然后你就可以像平常一样访问里面的内容:
# in file 2
import file1
print file1.x
如果你需要在文件2中设置 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