在Python中, 如果我想从不同的目录导入文件,那么我应该这样做,
import sys
sys.path.append("/path")
现在,
我有两个要导入的文件,
File1.py and File2.py,
这些是文件的位置,
MyFiles/File1.py
MyFiles/File2.py
现在,如果我要导入这两个文件,我会这样做
from MyFiles import File1
from MyFiles import File2
这不应该起作用,因为我没有使用sys.path
但是当我运行我的代码时,文件导入成功,而没有使用sys.path
这是代码,
from __future__ import print_function
import sys
import os
import hashlib
import struct #Interpret strings as packed binary data
import getopt #for Runtime arguments
from MyFiles import File1
from MyFiles import File2
尽管我还没有定义sys.path,但这段代码仍然可以从目录中成功导入文件。
并且sys.path
['C:\\Users\\Sufiyan\\Desktop\\MyFolder', 'C:\\Windows\\SYSTEM32\\python33.zip', 'C:\
\Python33\\DLLs', 'C:\\Python33\\lib', 'C:\\Python33', 'C:\\Python33\\lib\\site-
packages']
很明显,路径,
C:\\Users\\Sufiyan\\Desktop\\MyFolder\\MyFiles
不存在。
然后为什么这段代码有效?
答案 0 :(得分:1)
该路径不存在,但父路径'C:\\Users\\Sufiyan\\Desktop\\MyFolder'
是。当你做的时候
from MyFiles import File1
它会尝试将模块的路径附加到现有路径,因此它将采用上述路径,向其添加“MyFiles”,并尝试从该模块导入File1(文件或来自{ MyFiles目录中的{1}}。
您可以将模块路径视为与文件路径非常相似。如果它作为sys.path中任何东西下的子目录存在,那就是它将获得它的地方。
答案 1 :(得分:0)
他们所居住的文件夹可能已经在您的路径中了。您可以通过执行以下操作进行检查:
import sys
sys.path
试一试。