2011-07-09 173 views
2

這是一個後續問題import python modules with the same name,但兩者是有點風馬牛不相及,它可能更好地提出新問題:mod_wsgi的:具有相同的名稱導入Python模塊

我有幾個Python項目,他們都有一個CONF包:

/some_folder/project_1/ 
    conf/ 
    __init__.py 
    some_source_file.py 

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

對於每一個項目,我已經創建的站點包文件夾中的文件.pth與此內容:

.../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/') 

現在,訪問的C ONF模塊適用於/ some_folder/PROJECT_1 /:

import conf.some_source_file 

但不適用於/ another_folder/project_2 /:

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

這可能是由於蟒蛇僅搜索在sys任何文件夾下的第一個的conf路徑。路徑。

因此,我已變成PROJECT_1和project_2到Python包,並添加在任何一個符號鏈接,這樣我就可以在一個完全合格的時尚同時訪問的conf包:

/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腳本,我現在可以從雙方的conf包導入模塊:

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

然而,當我嘗試使用mod_wsgi的Apache模塊的WSGI應用程序中做的一樣,導入失敗的第二個項目。具體來說,wsgi'start file'(即在我的虛擬服務器的Apache配置文件的WSGIScriptAlias語句中引用的wsgi後綴)成功導入/ another_folder/project_2 /中的模塊,該模塊又導入project_2/conf/another_source_file的.py。

第二次導入失敗,儘管/ another_folder/project_2 /位於sys.path中。 WSGI應用程序以守護進程模式運行。

我如何得到這個排序?

回答

0

FWIW,這是在mod_wsgi郵件列表和內存中處理的,事實上這是由同名的模塊和軟件包引起的,並且是錯誤的。

相關問題