0

私のホームディレクトリには、というフォルダがありますlocal。その中には、とというファイルがあり__init__.pyますlocal_settings.py。私のdjangoアプリは完全に別のディレクトリにあります。アプリがDEBUGモードで実行されていないときに、ファイルをロードしたいと思いlocal_settings.pyます。これはどのように達成できますか?私は以下を読みました:

相対パスからモジュールをインポートする

Pythonの別のフォルダからファイルをインポートする

http://docs.python.org/tutorial/modules.html

基本的に、これらのチュートリアルでは別のディレクトリからインポートできますが、まったく異なる作業ツリーについてはどうでしょうか。..、..、..などを続けたくない。ホームディレクトリに移動する方法はありますか?

次のコードを試しました。

import os, sys
os.chdir(os.path.join(os.getenv("HOME"), 'local'))
from local_settings import *

しかし、apacheerror.logにエラーが表示され続けます...

4

2 に答える 2

0

os.chdir現在の作業ディレクトリに影響を与えるだけで、Pythonがモジュールをインポートする場所とは何の関係もありません。

あなたがする必要があるのは、localディレクトリをPythonpathに追加することです。これは、シェルから変更するPYTHONPATHか、Pythonの内部から変更することで実行できsys.pathます。

import sys
import os
sys.path.append(os.path.expanduser("~/local"))
import local_settings
于 2012-09-03T18:48:44.683 に答える
0

ソース管理に関する懸念に応えて、そのファイルを無視するようにソース管理を設定するか、OS上のファイルを別のファイルにリンクするためにデプロイスクリプトの一部としてシンボリックリンクをインストールすることができます。djangoではありませんが、両方を行います。しかし、それは簡単な作業です。

デプロイレイアウトは次のようになります。

/current ( symlink to /releases/v3 )
/settings/local_settings.py
/releases/v1
/releases/v2
/releases/v3

タスクはデプロイの一部として実行されます。

cd /current 
ln -s /settings/local_settings.py local_settings.py

fabまたはcapistranoを使用してデプロイする場合は、数行の構成です。puppet/chefでも簡単にこれを行うことができると確信しています。

于 2012-09-03T19:02:57.913 に答える