Django的搜尋路徑與Import機制

2021-10-10 16:39:51 字數 1556 閱讀 2026

留意到django的 urls.py 檔案:

from django.conf.urls.defaults import *

from pythonproject.views import hello, current_datetime, hours_ahead

urlpatterns = patterns('',

('^hello/$', hello),

('^time/$', current_datetime),

(r'^time/plus/(\d)/$', hours_ahead),

)

留意到這句:

from pythonproject.views import hello, current_datetime, hours_ahead
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)該怎麼做呢?

import sys
大多數情況,上面的**工作的很好。但是如果你沒有發現上面**有什麼問題的話,可要注意了,上面的**有時會找不到模組或者包(importerror: no module named ******),這是因為:

sys模組是使用c語言編寫的,因此字串支援 '\n', '\r', '\t'等來表示特殊字元。所以上面**最好寫成:

# 或者

這樣可以避免因為錯誤的組成轉義字元,而造成無效的搜尋目錄(sys.path)設定。

最短路徑與搜尋之列印路徑

本篇將彙總floyd,spfa,bfs dfs 以及01揹包 的路徑列印思想及 實現,是較為冷門的acm題目考點,但其中的思想要求每個程式設計師掌握 咳咳.雖然我也剛剛學會.floyd演算法是最基礎的最短路徑演算法,因此優先講解 此篇將預設各位讀者已了解相應演算法原理,故只解釋列印路徑的 inclu...

python 模組 匯入與搜尋路徑

示例 參考python 的 from 語句讓你從模組中匯入乙個指定的部分到當前命名空間中。當你匯入乙個模組,python 解析器對模組位置的搜尋順序是 專案結構 all config settings.py src init py config settings.py db init py data...

ORACLE的EXP與IMP常用整理

關於oracle資料的匯出與匯入,是在工作中經常用到,尤其是資料庫備份。exp與imp的用法收集網路,還是那句話,出來混的,總是要還的 一.定義 oracle 的exp imp命令用於實現對資料庫的匯出 匯入操作 exp命令用於把資料從遠端資料庫伺服器匯出至本地,生成dmp檔案 imp命令用於把本地...