Django Apache 2 ModuleNotFoundError: No module named 'django'

Django Apache 2 ModuleNotFoundError: No module named 'django'

我正在尝试在 apache2 上部署我的 django 应用程序,我在 AWS ec2 ubuntu 实例上。最初我得到了一个致命的 Python 错误:Py_Initialize:无法获取语言环境编码,所以我通过删除我的环境并在 3.6 上启动一个新的虚拟环境将我的 python 从 2.7 切换到 3.6 ,我还从实例中清除了 python 2.7 和 3.7。之后,我的 apache 中有一个名为 'Django error' 的无模块。感谢任何帮助,因为这个 :)。

<VirtualHost *:80>
ServerAdmin webmaster@example.com
DocumentRoot /home/ubuntu/pydjangoenv/myproj
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static /home/ubuntu/pydjangoenv/myproj/static
<Directory /home/ubuntu/pydjangoenv/myproj/static>
Require all granted
</Directory>
<Directory /home/ubuntu/pydjangoenv/myproj/myproj>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess myproj python-path=/home/ubuntu/pydjangoenv/myproj python-home=/home/ubuntu/pydjangoenv/venv2

WSGIScriptAlias / /home/ubuntu/pydjangoenv/myproj/myproj/wsgi.py
</VirtualHost>

另外当我 运行 pip3 install django 我的 django 在 要求已满足:/home/ubuntu/pydjangoenv/venv2/lib/python3.6/site-packages (3.2.5)

中的 django

一旦你配置了你的 EC2 实例,我会假设你想要在这个服务器中的后端和前端,通过 shell 访问实例。然后 运行:

要从 Ubuntu 更新软件包:

sudo apt-get update

安装 Python 使用:

sudo apt-get install python3.6

安装 pip 使用:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

然后需要安装虚拟环境,可以使用virtualenv:

pip install virtualenv

创建虚拟环境:

virtualenv mynewvenv

然后进入 venv:

source mynewvnev/bin/activate

进入 vnev 后,运行 安装 Django:

pip install django

然后我建议将您的 Django 项目上传到 GitHub 或 GitLab,然后克隆该存储库。

更新您的 settings.py 非常重要,尤其是 ALLOWED_HOSTS 如果您使用自定义域进行重定向:

ALLOWED_HOSTS = ['yourdomain.com',
                 'www.yourdomain.com',]

如果需要,更新您的数据库访问权限也很重要,如果您运行使用默认数据库sqlite3,只需确保数据库名称、用户和密码与您的相匹配实际信息。

如果以上操作正确,请尝试将 Apache config 文件中的 WSGI 部分更新为如下所示:

WSGIPassAuthorization On
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIDaemonProcess yourapp python-home=/usr/local/venvs/yourapp
WSGIProcessGroup DjangoMainAppName

错误很可能在这一行:

WSGIDaemonProcess delta_new python-path=/home/ubuntu/pydjangoenv/myproj python-home=/home/ubuntu/pydjangoenv/venv2

尝试更改为:

WSGIDaemonProcess delta_new python-path=/home/ubuntu/pydjangoenv/myproj python-home=/home/ubuntu/pydjangoenv/venv2/lib/python3.6/site-packages

使用准确的 Python 版本。

您可以阅读如何正确配置 Django 应用程序的 config 文件和单个应用程序的守护程序模式 here

通过使用 python 3.6 重新安装要求创建新的虚拟环境,更改为 python 3.6,我能够通过 apache 制作我的网站 运行,然后我卸载 libapache2 -mod-wsgi-py3 使用 sudo apt-get remove libapache2-mod-wsgi-py3,然后我在我的 python 3.6 虚拟环境中再次安装它,然后网站结束了正在工作。