当前位置: 首页 > 知识库问答 >
问题:

使用Django mod_wsgi导入错误

袁琪
2023-03-14

我想将Django项目从测试服务器迁移到Apache(CentOS上的2.2.15版本)。我使用[1]安装了mod_wsgi,并尝试使用[2]将我的项目装载为wsgi应用程序。

我遵循Hello-World示例(有帮助的SO-thread[3]),放置了测试wsgi。py文件与我现有的Django项目文件(wsgi.py)位于同一目录中。这是可行的(例如,我可以通过wget访问)。

<VirtualHost *:80>
   DocumentRoot <abs_path>/myproject/myproject
   WSGIScriptAlias /wsgi  <abs_path>/myproject/myproject/test_wsgi.wsgi
</VirtualHost>

在此基础上,我对Apachehtml" target="_blank">配置文件进行了修改,以指向基于mod_wsgi和Django文档[2,4]的Django项目wsgi文件(见下文)。

WSGIPythonPath <abs_path>/myproject/myproject

<VirtualHost *:80>

   DocumentRoot <abs_path>/myproject/myproject
   WSGIScriptAlias /django  <abs_path>/myproject/myproject/wsgi.py

   <Directory <abs_path>/myproject/myproject>
            <Files wsgi.py>
                    # Require all granted
                    Order deny,allow
                    Allow from all
            </Files>
    </Directory>

</VirtualHost>

这会引发“500内部服务器错误”:“ImportError:没有名为django.core.wsgi的模块”

mod_wsgi是针对安装了Django的Python 2.7编译的[5]。

ldd mod_wsgi.so 
linux-vdso.so.1 =>  (0x00007fff3ed30000)
libpython2.7.so.1.0 => /usr/local/lib/libpython2.7.so.1.0 (0x00007f641e11d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f641dee8000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f641dce4000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f641dae1000)
libm.so.6 => /lib64/libm.so.6 (0x00007f641d85c000)
libc.so.6 => /lib64/libc.so.6 (0x00007f641d4c9000)
/lib64/ld-linux-x86-64.so.2 (0x0000003c14e00000)

基于[6],我在wsgi.py中添加了python2.7站点包的路径:

# add the myproject project path into the sys.path
sys.path.append('<PATH_TO_MY_DJANGO_PROJECT>/myproject')
# add the python2.7 site-packages path to the sys.path
sys.path.append('<PATH_TO_python2.7>/Lib/site-packages')

我还在httpd中添加了python2.7的路径。形态:

WSGIPythonPath <PATH_TO_PROJECT>:<PATH_TO_python2.7>/Lib/site-packages

尽管如此,我还是收到了“500内部服务器错误”:“ImportError:没有名为django.core.wsgi的模块”。

有什么建议吗?

[1]http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide

[2] http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide

[3]Hello World inmod_wsgi

[4]https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/

[5] mod_wsgi不是在向WSGIPythonHome致敬

[6] 导入错误:没有名为django的模块。果心wsgi Apache VirtualEnv AWS wsgi

共有1个答案

司徒隐水
2023-03-14

去阅读实际的Django文档。在这里,您将看到设置Python模块搜索路径的要求。你不应该有证据证明你做了那件事。

  • https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/

此外,不要将DocumentRoot设置为Django项目的父目录。您正在向安全问题敞开大门。更重要的是,您将Django应用程序挂载在子URL上,这意味着您的项目源代码(包括带有数据库密码的设置文件等)现在可以由远程用户从站点的根目录下载。

 类似资料:
  • 问题内容: 我正在尝试导入具有数字和字母数字值的列(从.csv文件),但是当我运行该过程时,它会正确导入数字行,但对于字母数字值,默认为。 表A 使用的代码 我用过,一点都没有改变。 问题答案: 问题原因是Oledb提供程序 导入具有混合数据类型列的csv文件或excel文件时,它将用替换非主要类型。( 使用Oledb或Ace.Oledb ) 解决方法 您可以通过添加包含字符串值的第一行,然后在完

  • 问题内容: 我收到以下导入代码出现错误: 代码:包主 错误: 鉴于我已经将文件存储在api文件夹下,因此导入不起作用是有原因的吗? 我正在下面使用在main.go中 问题答案: 编译器会寻找包的 实际使用 ..而不是它存在的事实。 您需要使用该软件包中的某些内容。或删除导入。例如: 如果您在源文件中不使用该包中的任何内容,则无需导入。也就是说,除非您希望函数运行。在这种情况下,您可以使用忽略符号。

  • 问题内容: 借助Halfdans的建议,在首先安装git之后,我能够成功使用goinstallgithub.com/hoisie/web.go而没有任何错误。但是,现在当我尝试编译给出的示例代码时,go找不到了Web包。我得到了错误 关于此代码 为了识别包装,我需要做些特别的事情吗?我在$ GOROOT / src / pkg / github.com / hoisie / web.go / we

  • 我正试着用这本手册开始tensorflowhttps://www.tensorflow.org/install/install_windows 所有安装都成功完成,我正在使用python 3.5.2和最新版本的pip,遇到这个错误,有人告诉我应该怎么做吗? 在swig\parth\AppData\Local\Programs\Python35\lib\site-p tensorflow\Pytho

  • 我有一个关于在android studio中导入import.hello.hello时出错的问题,如下图所示。请给我解决方案如何解决这个错误

  • 问题内容: 任何人都可以告诉我在哪里可以找到JFreeChart的完整版本?我也从sourceforge页面下载了JCommon和JFreeChart,但是JFreeChart仅包含jfreechart- demo.jar,因此,即使我在Eclipse中正确添加了库,它也不起作用。 非常感谢! 问题答案: 解压缩后,所需的JAR文件位于目录中。 例如,以下命令行在Unix上运行;在Windows上