簡體   English   中英

mod_python和子包導入問題:ImportError:未命名模塊

[英]mod_python and subpackages importing issues: ImportError: No module named

我正在探索mod_python,而軟件包導入遇到了麻煩。

我有這樣的結構:

my base dir
     |
     +- __init__.py  
     +- index.py    
     +- package (directory)
        |
        +- __init__.py
        +- package.py (file)

和一個Apache虛擬主機,如下所示:

<VirtualHost *:80>

        ServerAdmin root at localhost
        ServerName myname
        DocumentRoot /path/to/my base dir

        <Location />
                DirectoryIndex index.html index.py
                Options Indexes MultiViews FollowSymLinks
                AddHandler mod_python .py
                PythonHandler mod_python.publisher
        </Location>

</VirtualHost>

在index.py文件中,我有以下內容:

from package.package import myobject
....
....

從Apache加載index.py時,出現500內部服務器錯誤,如下所示:

ImportError: No module named package.package

我究竟做錯了什么?

干杯,伊萬

首先,如果您剛開始進行Python Web部署, 則不應該使用mod_python。 現在,它正式是一個死項目,不建議使用。 請改用mod_wsgi。

代碼的實際問題是您沒有將根目錄放在Python路徑上,因此mod_python不知道在哪里可以找到它。 DocumentRoot用於靜態文檔,而不用於代碼-實際上,您不應將其設置為基本目錄,因為這是不安全的,並且可能導致Python代碼的內容在網絡上公開,這不是您想要的。

而是使用PythonPath指令:

PythonPath "['/path/to/my base dir']"

在mod_python 3.3中,mod_python.publisher的Python代碼文件的結構不是包。 確保您閱讀:

http://www.modpython.org/live/current/doc-html/pyapi-apmeth.html

具體來說,有關import_module()的文檔解釋了代碼導入的工作方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM