0

https://github.com/rtfd/readthedocs.org/tree/master/readthedocs/settings

https://code.djangoproject.com/wiki/SplitSettingsから上記のリンクにたどり着きました。

その特定の構成がどのように機能するかを誰かが説明できますか? 特に、settings/__init__.py特定の設定ファイル (この場合は postgres.py) の名前だけを含めることによって実行される部分。私は自分のプロジェクトでそれをやろうとしましたが、djangoは適切なモジュールが見つからないと不平を言ったので、readthedocsでどのように機能していますか?

4

2 に答える 2

2

彼らがしたことは実際にはかなり悪い形です。__init__pyこの場合は へのシンボリックリンクpostres.pyです。githubで開くと、それが指しているファイルが表示されるだけです。これは、強制的に表示されたときにシンボリックリンクがどのように見えるかです。自分でファイルを作成し、ファイル名を含む行を追加するだけではありません。

ただし、シンボリック リンクはすべてのオペレーティング システムで機能するとは限らないため、実際にシンボリック リンクをコミットするのは適切ではありません。さらに、ここでの要点は、postgres または sqlite3 の設定を切り替えることができるようにすることですが__init__.py、新しいシンボリック リンクを削除して作成すると、sqlite.py実際にはその時点でソース コードが変更されたことになります (コミットされたため)。元のpostgres.pyシンボリックリンクに戻さずに新しい変更をプルすることはできません。

ただし、__init__.pyそこにある必要があります。そうしないと、Python はそれをモジュールとして認識しません。彼らがすべきことは次のようなことです:

# __init__.py

from local import *

そして、 で使用したいデータベース設定ファイルへのシンボリック リンクを作成しますlocal.py。そのファイルはコミットされず、問題はありません。

于 2012-07-06T15:30:41.650 に答える
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

于 2012-07-06T11:08:13.930 に答える