Django ModuleNotFoundError: No module named 'myProject'
Django ModuleNotFoundError: No module named 'myProject'
ModuleNotFoundError: No module named 'myProject' 错误,但我不知道原因。如果你告诉我,我很高兴。
・ CentOS 7.2
・ Python 3.6
・ Django 2.0
· 阿帕奇 2.4
我设置的虚拟环境如下
pip install virtualenv
mkdir xxx
cd xxx
python3 -m venv xxx
source xxx/bin/activate
pip install mod_wsgi
mod_wsgi-express module-config
LoadModule wsgi_module "/home/username/myProject/myProject/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
WSGIPythonHome "/home/username/myProject/myProject"
■ /etc/httpd/conf.d/django.conf
NameVirtualHost *:80
LoadModule wsgi_module /home/username/myProject/myProject/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
WSGIPythonHome /home/username/myProject/myProject
WSGISocketPrefix /var/run/wsgi
<VirtualHost *:80>
ServerName xxx.com
DocumentRoot /home/username
WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess xxx python-home=/home/username/myProject/myProject python-path=/home/username/myProject/myProject/lib/python3.6/site-packages
WSGIProcessGroup xxx
WSGIScriptAlias / /home/username/myProject/myProject/wsgi.py
<Directory /home/username/myProject/myProject/static>
Require all granted
</Directory>
<Directory /home/username/myProject/myProject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
■ wsgi.py
import os,sys
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xxx.settings")
application = get_wsgi_application()
阅读:
WSGIPythonHome
指令或 python-home
选项应指向 Python 虚拟环境的根目录。对于该虚拟环境,当 Python 为 运行 时,这应该与 sys.prefix
的值相同。
然后 WSGIPythonPath
指令或 python-path
选项将被设置为您的项目代码目录,其中存在 modules/packages,在您的情况下可能 /home/username/myProject
。
不要使用这些后面的选项指向 site-packages
目录,使用第一个选项指定虚拟环境的位置。
我会建议,因为你正在使用守护进程模式来添加:
WSGIRestrictEmbedded On
在 LoadModule
行之后。然后删除 WSGIPythonHome
和 WSGIPythonPath
并依赖 WSGIDaemonProcess
上的 python-home
和 python-path
选项。
顺便说一句,DJANGO_SETTINGS_MODULE
不会是 xxx.settings
。您可能是指 myProject.settings
.
此外,您的虚拟环境似乎是您的项目代码目录。如果是这样的话,真的不推荐。将虚拟环境创建为一个独立的子目录。不要将它与您的代码混在一起,因为这样就很难删除虚拟环境并重新创建它。
ModuleNotFoundError: No module named 'myProject' 错误,但我不知道原因。如果你告诉我,我很高兴。
・ CentOS 7.2
・ Python 3.6
・ Django 2.0
· 阿帕奇 2.4
我设置的虚拟环境如下
pip install virtualenv
mkdir xxx
cd xxx
python3 -m venv xxx
source xxx/bin/activate
pip install mod_wsgi
mod_wsgi-express module-config
LoadModule wsgi_module "/home/username/myProject/myProject/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
WSGIPythonHome "/home/username/myProject/myProject"
■ /etc/httpd/conf.d/django.conf
NameVirtualHost *:80
LoadModule wsgi_module /home/username/myProject/myProject/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
WSGIPythonHome /home/username/myProject/myProject
WSGISocketPrefix /var/run/wsgi
<VirtualHost *:80>
ServerName xxx.com
DocumentRoot /home/username
WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess xxx python-home=/home/username/myProject/myProject python-path=/home/username/myProject/myProject/lib/python3.6/site-packages
WSGIProcessGroup xxx
WSGIScriptAlias / /home/username/myProject/myProject/wsgi.py
<Directory /home/username/myProject/myProject/static>
Require all granted
</Directory>
<Directory /home/username/myProject/myProject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
■ wsgi.py
import os,sys
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xxx.settings")
application = get_wsgi_application()
阅读:
WSGIPythonHome
指令或 python-home
选项应指向 Python 虚拟环境的根目录。对于该虚拟环境,当 Python 为 运行 时,这应该与 sys.prefix
的值相同。
然后 WSGIPythonPath
指令或 python-path
选项将被设置为您的项目代码目录,其中存在 modules/packages,在您的情况下可能 /home/username/myProject
。
不要使用这些后面的选项指向 site-packages
目录,使用第一个选项指定虚拟环境的位置。
我会建议,因为你正在使用守护进程模式来添加:
WSGIRestrictEmbedded On
在 LoadModule
行之后。然后删除 WSGIPythonHome
和 WSGIPythonPath
并依赖 WSGIDaemonProcess
上的 python-home
和 python-path
选项。
顺便说一句,DJANGO_SETTINGS_MODULE
不会是 xxx.settings
。您可能是指 myProject.settings
.
此外,您的虚拟环境似乎是您的项目代码目录。如果是这样的话,真的不推荐。将虚拟环境创建为一个独立的子目录。不要将它与您的代码混在一起,因为这样就很难删除虚拟环境并重新创建它。