Python:是自动包含在路径中的当前目录吗?

时间:2014-06-26 16:26:56

标签: python path importerror python-import

Python 3.4:从阅读其他一些SO问题看来,如果moduleName.py文件在当前目录之外,如果要导入它,则必须将其添加到sys.path.insert(0, '/path/to/application/app/folder')的路径中,否则import moduelName语句会导致此错误:

ImportError: No module named moduleName

这是否意味着python会自动将同一目录中的所有其他.py文件添加到路径中?在表面下发生了什么,允许您导入本地文件而不附加Python的路径? __init__.py文件在表面下做了什么?

1 个答案:

答案 0 :(得分:10)

Python将初始脚本所在的目录作为第一项添加到sys.path

  

在程序启动时初始化时,此列表的第一项path[0]是包含用于调用Python解释器的脚本的目录。如果脚本目录不可用(例如,如果以交互方式调用解释器或者从标准输入读取脚本),path[0]是空字符串,它指示Python首先搜索当前目录中的模块。请注意,在PYTHONPATH

的结果插入条目之前插入了脚本目录

因此,表面下的内容是Python将“本地”目录附加(或更确切地说,预先添加)到sys.path 为您

这只是意味着脚本所在的目录是搜索模块时的第一个调用端口。

__init__.py与这一切无关。将目录设为(regular) package需要__init__.py;在Python模块搜索路径中找到的任何此类目录都被视为模块。