1

在 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不存在。

那么为什么这段代码有效?

4

2 回答 2

1

该路径不存在,但父路径'C:\\Users\\Sufiyan\\Desktop\\MyFolder'存在。当你这样做时

from MyFiles import File1

它将尝试将模块的路径附加到现有路径,因此它将采用上述路径,将“MyFiles”添加到其中,并尝试从该模块(文件或__init__.pyMyFiles 目录中)导入 File1 )。

您可以将模块路径视为与文件路径非常相似。如果它作为 sys.path 中任何内容下的子目录存在,那么它将去那里获取它。

于 2013-10-18T17:46:22.437 回答
0

他们所在的文件夹可能已经在您的路径中。您可以通过执行以下操作进行检查:

import sys

sys.path

试一试。

于 2013-10-18T15:55:03.403 回答