2011-07-09 10 views
2

これはimport python modules with the same nameへのフォローアップの質問ですが、2はやや無関係ですと、それは新しい質問をするために、おそらく良いでしょう:のmod_wsgi:同じ名前の輸入pythonモジュール

私はいくつかのpythonのプロジェクトを持っているし、彼らCにアクセスして、今すぐ

.../site-packages/project_1.pth: 
import sys; sys.path.append('/some_folder/project_1/') 

.../site-packages/project_2.pth: 
import sys; sys.path.append('/another_folder/project_2/') 

各プロジェクトのために
/some_folder/project_1/ 
    conf/ 
    __init__.py 
    some_source_file.py 

/another_folder/project_2/ 
    conf/ 
    __init__.py 
    another_source_file.py 

、私はこの内容でのsite-packagesフォルダ内の.pthファイルを作成している:すべてのconfにパッケージを持っていますONFモジュールは、のために/ some_folder /てproject_1 /作品:

import conf.some_source_file 

ではなく、ために/ another_folder/project_2 /:SYSのみで任意のフォルダの下に最初のconfパスを検索する原因のpythonにおそらくある

import conf.another_source_file 
AttributeError: 'module' object has no attribute 'another_source_file' 

。パス。今私ができる、通常のPythonスクリプトでは

/some_folder/project_1/ 
    __init__.py 
    project_1 <-- symlink to . 
    conf/ 
    __init__.py 
    some_source_file.py 

/another_folder/project_2/ 
    __init__.py 
    project_2 <-- symlink to . 
    conf/ 
    __init__.py 
    another_source_file.py 

私はそのためのpythonパッケージにてproject_1とproject_2を向け、のいずれかでシンボリックリンクを追加しましたので、私は完全修飾された形で、両方のconfパッケージにアクセスすることができています両方のconfパッケージからインポートモジュール:

import project_1.conf.some_source_file 
import project_2.conf.another_source_file 

しかし、私はmod_wsgiのApacheのモジュールを使用してWSGIアプリケーション内で同じことをしようとすると、インポートが第二のプロジェクトのために失敗しました。具体的には、wsgiの「開始ファイル」(つまり、仮想サーバーのApache設定ファイルのWSGIScriptAliasステートメントで参照されるwsgiサフィックスを持つファイル)は、/ another_folder/project_2 /内のモジュールを正常にインポートし、次にproject_2/conf/another_source_file .py。

/another_folder/project_2 /がsys.pathにあるにもかかわらず、2回目のインポートが失敗します。 WSGIアプリケーションはデーモンモードで実行されています。

どうすればこの並べ替えができますか?

答えて

0

FWIW、これはmod_wsgiメーリングリストとメモリから同じ名前のモジュールとパッケージの両方が存在することが原因であると判明し、間違ったものを取り上げていました。

関連する問題