2012-01-02 6 views
1

ConfigParserモジュールの使用私は構成ファイルを読み込もうとしているので、ユーザーがアプリケーションの設定を編集してこれらの構成をスクリプト間で共有できるようにすることができます。 これはメインスクリプトでは完全に機能しています。しかし、呼び出されるセカンダリスクリプトがあり、同じ場所の同じ設定ファイルを読み込みますが、場所が見つからないというエラーが返されます。 どちらのスクリプトも同じディレクトリにあります。application/bin/ 設定ファイルはapplication/conf/にあります。メインスクリプトで設定ファイルを正常に参照するには、以下のコードを使用します。Python - スクリプトの実行、場所特定エラー

config = ConfigParser.ConfigParser() 
config.readfp(open('../conf/settings.conf')) 

セカンダリスクリプトが同じコードで実行されると、その場所は存在しないとレポートされますか?私はロガーモジュールを使って、メインスクリプトと同じbinフォルダを正しく返すsys.path [0]をログに記録しました。おそらく、ここで欠けているシンプルなものがありますか?

これらの問題のトラブルシューティングのヒントも歓迎します。

+1

ファイルの権利について – DonCallisto

+0

どのようにスクリプトを実行していますか?ターミナルからそれらを起動する場合は、両方を同じ作業ディレクトリから実行していますか?ファイルのアクセス権は – James

+0

であり、現時点ではそれらを実行しているアプリケーションはrootとして呼び出されますが、これは現在内部テストのためです。 @James、彼らは両方ともPythonインタプリタの同じインスタンスによって呼び出されていました。私が見るところでは、2つのスクリプトの位置とconfigファイルへの相対的な位置の点で違いはありません。 – Draineh

答えて

1

あなたがdirname__file__を使用することを好むことができます。

from os.path import dirname, join 
config = ConfigParser.ConfigParser() 
config_fn = join(dirname(__file__), '..', 'conf', 'settings.conf') 
config.read(config_fn) 

をアプリ(のpythonビン/ app.py、またはPythonのapp.py)を起動しているかによっては、 '..' になります間違っている。 .pyファイルのディレクトリから開始すると、そのメソッドを使用して.pyから.confへのパスを常に構築することができます。

+0

ありがとうございます。これは完全に働いています、私がこのソリューションを見いだすことはありませんでした。私はすでに働いているスクリプトに同じソリューションを適用して、一貫性を維持しています。再度、感謝します – Draineh

関連する問題