Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mod_wsgi找不到我的python包?_Python_Django_Apache_Mod Wsgi - Fatal编程技术网

mod_wsgi找不到我的python包?

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

我在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 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__