mod_wsgi找不到我的python包?
我在Apache/mod_wsgi中加载的django应用程序找不到我的外部包,即使我在sys.path中指定了它 设置如下所示: a) 外部包位于/var/www/site/my/python/config中 b) django网站(带有settings.py文件)位于/var/www/site/domain中 c) wsgi配置文件是:mod_wsgi找不到我的python包?,python,django,apache,mod-wsgi,Python,Django,Apache,Mod Wsgi,我在Apache/mod_wsgi中加载的django应用程序找不到我的外部包,即使我在sys.path中指定了它 设置如下所示: a) 外部包位于/var/www/site/my/python/config中 b) django网站(带有settings.py文件)位于/var/www/site/domain中 c) wsgi配置文件是: import os, sys sys.stdout = sys.stderr # Add the virtual Python environment s
import os, sys
sys.stdout = sys.stderr
# Add the virtual Python environment site-packages directory to the path
import site
site.addsitedir('/var/www/virtualenv/lib/python2.6/site-packages')
# Avoid ``[Errno 13] Permission denied: '/var/www/.python-eggs'`` messages
os.environ['PYTHON_EGG_CACHE'] = '/var/www/egg-cache'
# Add project directory to PYTHONPATH
sys.path.append('/var/www/site') # <---- THIS SHOULD FIND EXTERNAL PACKAGES?
os.environ['DJANGO_SETTINGS_MODULE'] = 'domain.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
您可以看到,试图加载settings.py文件是因为打印了“导入之前”,但导入“my.python.config.ConfigParser”时代码失败。但它似乎将其检测为python.config
有什么线索吗
我一整天都在扯头发。然而,一切都可以在eclipse环境中工作,并且在设置python路径和django环境变量后直接调用'django-admin.py runserver 80'。我还验证了python路径在sys.path中
我没有主意了,所以任何帮助都将不胜感激 您是否在/var/www/site的所有子目录及其子目录中都有
\uuuuu init\uuuuuuuuu.py
当您访问my.python.config时,\uuuuu init\uuuuu.py
需要位于我的目录、python目录和config目录中
关于权限,wsgi将作为apache用户(您在wsgi.conf中指定的用户)运行。
照顾好它 在settings.py的开头添加:
import my
print my.__file__
验证打印出来的路径是否适用于您期望的“我的”包
换句话说,它可能拾取不同的“我的”包,因为这样的包存在于多个位置,并且sys.path的顺序错误
还要确保你去阅读:
它讨论了sys.path排序问题。导入后不应
print“
实际上是print”“
在settings.py文件中。是的,它应该。我一定是在上面一行输入消息时意外删除了报价?感谢您指出out.init.py现有和权限集都是正确的。感谢您的建议。重新订购sys.path无法按照您的指示工作,并且“打印我的文件”没有打印出来,这表明它不是正确的软件包。但是,如果eclipse/pydev和'django-dadmin.py runserver'命令都起作用,我看不出mod_wsgi还会混淆什么。我确实使用,安装在/etc/fstab中,但原始目录是在apache中设置的。有什么原因不能在Apache上运行吗?如果像您所说的“打印我的._文件”没有打印出来,那么它就不可能运行。你重启Apache了吗?如果“我的”导入成功,它必须打印出一些内容。在“导入我的”之后再打印一张,看看这样做是否成功导入了“我的”。好吧,所以我进一步缩小了范围。我发现,如果我下载源tar文件,并将其解压到目标,它就会工作。但是,如果我卸载它,在目标中创建顶级目录,并将内容移动到完全相同的布局中。它不工作,mod_wsgi/apache找不到文件。我假设这与权限有关(尽管所有文件都具有世界可读性)?有没有办法比较目录/文件布局上的权限?重要的不仅仅是文件权限,还有目录。这将扩展到所有目录,并备份到根目录。去看它解释权限。
prior to import
mod_wsgi (pid=3465): Exception occurred processing WSGI script '/var/www/mod_wsgi/django.wsgi'.
Traceback (most recent call last):
File "/var/www/virtualenv/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 250, in __call__
self.load_middleware()
File "/var/www/virtualenv/lib/python2.6/site-packages/django/core/handlers/base.py", line 39, in load_middleware
for middleware_path in settings.MIDDLEWARE_CLASSES:
File "/var/www/virtualenv/lib/python2.6/site-packages/django/utils/functional.py", line 276, in __getattr__
self._setup()
File "/var/www/virtualenv/lib/python2.6/site-packages/django/conf/__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "/var/www/virtualenv/lib/python2.6/site-packages/django/conf/__init__.py", line 89, in __init__
raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'domain.settings' (Is it on sys.path?): No module named python.config
import my
print my.__file__