Python3.7 ImportError : No module named 'django'

标签 python django python-3.x apache mod-wsgi

几天前,我决定将python从2.7版更新到3.7版。这是我当前的设置:

Ubuntu 16.04
Python 3.7.7
Django 3.0.6
Apache/2.4.18

使用python -m venv --system-site-packages /var/www/path/to/myenv命令创建了一个虚拟环境,在激活了该环境之后,我创建了一个新项目。
通往环境的路径看起来像这个/var/www/path/to/myenv,而通往项目的路径看起来像这个/var/www/path/to/myenv/myprojectmyproject.conf的配置如下所示:
<VirtualHost *:80>
    ServerName myproject.com
    ServerAlias www.myproject.com
    WSGIDaemonProcess myproject processes=2 threads=15 display-name=%{GROUP} python-home=/var/www/path/to/myenv python-path=/var/www/path/to/myenv/myproject
    WSGIProcessGroup candyhand

    WSGIScriptAlias /   /var/www/path/to/myenv/myproject/myproject/wsgi.py

    <Directory /var/www/path/to/myenv/myproject/myproject/>
    <Files wsgi.py>
        Require all granted
    </Files>
    </Directory>

    <Directory /var/www/path/to/myenv/myproject/>
        Require all granted
    </Directory>

    CustomLog /var/www/path/to/myenv/myproject/logs/apache_access.log combined
    ErrorLog /var/www/path/to/myenv/myproject/logs/apache_error.log

    Alias /static/ /var/www/path/to/myenv/myproject/static/
    <Directory /var/www/path/to/myenv/myproject/>
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>


    Alias /media/ /var/www/path/to/myenv/myproject/media/
    <Directory /var/www/path/to/myenv/myproject/>
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

但是我从Apache服务器收到错误500。这是apache服务器的日志:
mod_wsgi (pid=9495): Target WSGI script '/var/www/path/to/myenv/myproject/myproject/wsgi.py' cannot be loaded as Python module.
[Wed May 20 16:25:08.145621 2020] [wsgi:error] [pid 9495]  mod_wsgi (pid=9495): Exception occurred processing WSGI script '/var/www/path/to/myenv/myproject/myproject/wsgi.py'.
[Wed May 20 16:25:08.145788 2020] [wsgi:error] [pid 9495]  Traceback (most recent call last):
[Wed May 20 16:25:08.145864 2020] [wsgi:error] [pid 9495]   File "/var/www/path/to/myenv/myproject/myproject/wsgi.py", line 12, in <module>
[Wed May 20 16:25:08.145885 2020] [wsgi:error] [pid 9495]      from django.core.wsgi import get_wsgi_application
[Wed May 20 16:25:08.145945 2020] [wsgi:error] [pid 9495]  ImportError: No module named 'django'

我根据此documentation配置了VirtualHost,但也许我在某个地方出错了,谢谢您的建议。

P.S.python manage.py runserver命令运行良好

最佳答案

问题很可能是python -m venv在您的virtualenv内未生成Activate_this.py,请查看https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html#daemon-mode-multiple-applications上的文档

“当需要如上所述从WSGI脚本文件中激活Python虚拟环境时,最好使用virtualenv或virtualenvwrapper来创建Python虚拟环境。这是因为它们都提供了activate_this.py脚本文件,完成设置sys.path的所有工作。当您将pyvenv或python -m venv与Python 3一起使用时,将不提供此类激活脚本。”

编辑

刚刚发现mod_wsgi v4.6.1似乎可以正确处理python -m venv创建的虚拟环境,但是mod_wsgi必须使用与virtualenv完全相同的python版本(mod_wsgi不会从virtualenv中获取python解释器,只需检查您内部的python版本即可。 wsgi.py,以确保mod_wsgi使用的是正确的)。如果解释器版本错误,则必须在将全局python软件包更新为正确的版本号后重新安装mod_wsgi。

关于Python3.7 ImportError : No module named 'django' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61916611/

相关文章:

python - 在数据框python的每一行中按字母顺序对单词进行排序

python - 断言错误 : `HyperlinkedIdentityField` requires the request in the serializer context

django - Django 1.7版AppRegistryNotReady : Models aren't loaded yet

python - python中函数的均方根

python-3.x - 使用 Python 将日文字符输出到文件

python - GEKKO 中 MPC 的自由度警告

python - .pyc 文件何时刷新?

python - 请求 https ://www. googleapis.com/bigquery/v2/projects/publicdata/queries?alt=json 时出现 HttpError 403 返回“访问被拒绝:作业 publicdata:

python - 使用 update() 方法时 Django ImageField 不更新

python - 如何在保留结构的同时遍历列表列表