[Django入门知识浅介]Django的搜索路径与Import机制

        注:以下内容转载自 现代魔法学院 网站的 Django的搜索路径与Import机制 一文,仅供学习使用。

        Python 的 import 机制是怎样的呢?

        在 Python 中,每个 py 文件被称之为模块,每个具有 __init__.py 文件的目录被称为包。只要模块或者包所在的目录在 sys.path 中,就可以使用 import 模块或 import 包来使用。

        在这之前,先介绍 Python 搜索路径。

        Python 搜索路径

        Python 搜索路径 就是使用 import 语句时,Python 所查找的系统目录清单。

        举例来说,假定你将 Python 路径设置为 ['','/usr/lib/python2.4/site-packages','/home/username/djcode/'] 。

        如果执行代码 from foo import bar,Python 将会首先在当前目录查找 foo.py 模块( Python 路径第一项的空字符串表示当前目录)。 如果文件不存在,Python将查找 /usr/lib/python2.4/site-packages/foo.py 文件。

        如果你想看 Python 搜索路径的值,运行 Python 交互解释器,然后输入:

import sys
print sys.path

        通常,你不必关心 Python 搜索路径的设置。 Python 和 Django 会在后台自动帮你处理好。

        Import 用法

        如果想使用非当前模块中的代码,需要使用 import,这个大家都知道。

        如果你要使用的模块(py文件)和当前模块在同一目录,只要 import 相应的文件名就好,比如在 a.py 中使用 b.py:

import b

        但是如果要 import 一个不同目录的文件(例如 b.py)该怎么做呢?

        首先需要使用 sys.path.append 方法将 b.py 所在目录加入到搜素目录中。然后进行 import 即可,例如:

import sys 
sys.path.append('c:\xxxx\b.py') # 这个例子针对 windows 用户来说的 

        大多数情况,上面的代码工作地很好。但是如果你没有发现上面代码有什么问题的话,可要注意了,上面的代码有时会找不到模块或者包(ImportError: No module named xxxxxx),这是因为:

        sys 模块是使用 c 语言编写的,因此字符串支持 '\n', '\r', '\t'等来表示特殊字符。所以上面代码最好写成:

sys.path.append('c:\\xxx\\b.py') 
# 或者
sys.path.append('c:/xxxx/b.py') 

        这样可以避免因为错误的组成转义字符,而造成无效的搜索目录(sys.path)设置。

你可能感兴趣的:(Django)