2012-07-06 21 views
0

https://github.com/rtfd/readthedocs.org/tree/master/readthedocs/settings__init__.py便於拆分設置管理中一個文件名Django項目@ readthedocs.org

我到達上面的鏈接從https://code.djangoproject.com/wiki/SplitSettings

有人可以解釋一下這個特定的配置是如何工作的嗎? 特別是,settings/__init__.py所播放的部分只包含特定設置文件的名稱(本例中爲postgres.py)。 我試圖做到這一點,我的項目和Django抱怨沒有找到合適的模塊,所以它是如何工作readthedocs?

回答

0

在這種情況下,settings/__init__.py不是一個有效的Python模塊,所以它非常明顯是一個符號鏈接到settings/postgres.py

wrt/__init__.py文件,它們是Python用來將文件夾視爲Python包的標記(參見http://docs.python.org/tutorial/modules.html#packages)。這個__init__.py文件是在您import mypackage時導入的,就像它是一個模塊一樣。

2

這實際上是他們所做的很糟糕的形式。在這種情況下,__init__py是與postres.py的符號鏈接。當你在github上打開它時,它只顯示它指向的文件,因爲這是強制顯示時符號鏈接的外觀。這與自己創建一個文件並添加一個帶有文件名的行不一樣。

但是,實際提交符號鏈接並不好,因爲它們不適用於所有操作系統。另外,這裏的要點是允許你在postgres或sqlite3設置之間切換,但是如果你刪除__init__.py並創建一個新的符號鏈接到sqlite.py,那麼你實際上已經改變了源代碼(因爲它已經被提交),而你如果不恢復原來的postgres.py符號鏈接,將無法進行新的更改。

但是,__init__.py必須在那裏,否則Python將無法將其識別爲模塊。他們應該做的是一樣的東西:

# __init__.py 

from local import * 

而且,然後創建一個符號鏈接到任何數據庫的設置文件,他們希望在local.py使用。那個文件沒有被提交,並且沒有問題。

相關問題