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 虚拟环境中再次安装它,然后网站结束了正在工作。
我正在尝试在 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 虚拟环境中再次安装它,然后网站结束了正在工作。