[英]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']"
確保您的PYTHONPATH是正確的: http : //www.modpython.org/live/mod_python-3.2.8/doc-html/dir-other-pp.html
在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.