Python Apache/Django:ImportError:没有名为';我的大学项目&x27;
尝试使用apache2和mod_wsgi托管我的django项目。我尝试了各种配置,但在浏览器中访问站点时不断出现导入错误,例如:Python Apache/Django:ImportError:没有名为';我的大学项目&x27;,python,django,apache,mod-wsgi,wsgi,Python,Django,Apache,Mod Wsgi,Wsgi,尝试使用apache2和mod_wsgi托管我的django项目。我尝试了各种配置,但在浏览器中访问站点时不断出现导入错误,例如: Traceback (most recent call last): File "/home/user/projects/my_projectMain/my_project/my_project/wsgi.py", line 19, in <module> application = get_wsgi_application() File
Traceback (most recent call last):
File "/home/user/projects/my_projectMain/my_project/my_project/wsgi.py", line 19, in <module>
application = get_wsgi_application()
File "/usr/local/lib/python3.4/dist-packages/django/core/wsgi.py", line 13, in get_wsgi_application
django.setup(set_prefix=False)
File "/usr/local/lib/python3.4/dist-packages/django/__init__.py", line 22, in setup
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
File "/usr/local/lib/python3.4/dist-packages/django/conf/__init__.py", line 53, in __getattr__
self._setup(name)
File "/usr/local/lib/python3.4/dist-packages/django/conf/__init__.py", line 41, in _setup
self._wrapped = Settings(settings_module)
File "/usr/local/lib/python3.4/dist-packages/django/conf/__init__.py", line 97, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/usr/lib/python3.4/importlib/__init__.py", line 109, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2212, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2224, in _find_and_load_unlocked
ImportError: No module named 'my_project'
wsgi.py:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_project.settings")
application = get_wsgi_application()
/etc/apache2/sites available/000-default.conf:
...
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Alias /static /home/user/projects/my_projectMain/my_project/static
<Directory /home/user/projects/my_projectMain/my_project/static>
Require all granted
</Directory>
<Directory /home/user/projects/my_projectMain/my_project/my_project>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess my_project python-path=/home/user/projects python-home=/home/user/projects/my_projectMain/my_projectEnv
WSGIProcessGroup my_project
WSGIScriptAlias / /home/user/projects/my_projectMain/my_project/my_project/wsgi.py
...
...
WSGIDaemonProcess my_project python-path=/home/user/my_projectMain/my_project/my_project python-home=/home/user/my_projectMain/venv
WSGIProcessGroup my_project
WSGIScriptAlias / /home/user/my_projectMain/my_project/my_project/wsgi.py
...
我得到:
Traceback (most recent call last):
File "/home/user/projects/my_projectMain/my_project/my_project/wsgi.py", line 25, in <module>
application = get_wsgi_application()
File "/usr/local/lib/python3.4/dist-packages/django/core/wsgi.py", line 13, in get_wsgi_application
django.setup(set_prefix=False)
File "/usr/local/lib/python3.4/dist-packages/django/__init__.py", line 27, in setup
apps.populate(settings.INSTALLED_APPS)
File "/usr/local/lib/python3.4/dist-packages/django/apps/registry.py", line 85, in populate
app_config = AppConfig.create(entry)
File "/usr/local/lib/python3.4/dist-packages/django/apps/config.py", line 90, in create
module = import_module(entry)
File "/usr/lib/python3.4/importlib/__init__.py", line 109, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2224, in _find_and_load_unlocked
ImportError: No module named 'django_static_jquery'
回溯(最近一次呼叫最后一次):
文件“/home/user/projects/my_projectMain/my_project/my_project/wsgi.py”,第25行,在
application=get\u wsgi\u application()
文件“/usr/local/lib/python3.4/dist-packages/django/core/wsgi.py”,第13行,在get\u-wsgi\u应用程序中
django.setup(set_prefix=False)
文件“/usr/local/lib/python3.4/dist packages/django/_init__.py”,第27行,在安装程序中
应用程序。填充(设置。已安装的应用程序)
文件“/usr/local/lib/python3.4/dist-packages/django/apps/registry.py”,第85行,填充
app_config=AppConfig.create(条目)
文件“/usr/local/lib/python3.4/dist-packages/django/apps/config.py”,第90行,在create中
模块=导入模块(条目)
文件“/usr/lib/python3.4/importlib/_init_uuu.py”,第109行,在导入模块中
return _bootstrap._gcd_import(名称[级别:],包,级别)
文件“”,第2254行,在_gcd_import中
文件“”,第2237行,在“查找”和“加载”中
文件“”,第2224行,在“查找”和“加载”中解锁
ImportError:没有名为“django\u static\u jquery”的模块
在Apache配置中,
WSGIDaemonProcess
指令:
您的python路径不正确或不完整。要导入myu项目
,必须将/home/pi/projects/myu projectMain/myu项目
添加到python路径
例如:
WSGIDaemonProcess my_project python-path=/home/user/projects/my_projectMain/my_project python-home=/home/user/projects/my_projectMain/my_projectEnv
仔细检查该文件中的所有配置,在大多数地方可能是pi
而不是user
。包括上面的一行。我做了一些错误的事情,导致了我所犯的错误。其中一些对更有经验的用户来说可能是显而易见的,但希望写下这些教训能帮助其他人。我知道我必须在很多人的地方挖得很深才能弄清楚其中的一些东西
我了解到,一旦设置了virtualenv(virtualenv-p/usr/local/bin/python3
btw),当virtualenv处于活动状态时,您应该只使用pip
和python3
(分别与pip3
相反)。例如:
(venv) user my_projectMain $ pip install django-bootstrap3
而不是:
(venv) user my_projectMain $ pip3 install django-bootstrap3
我的问题编辑显示,我为我的目录结构找到了正确的WSGIDaemonProcess python路径。感谢@spectras的帮助
接下来是一些文件系统权限设置步骤,我在下面的指南(下面的链接)中完全忽略了这些步骤
在这一切之后,我仍然得到:importorror:没有名为'django\u static\u jquery'的模块
。如果我在settings.py中从已安装的_应用程序中删除该行,则该站点将正确加载
最终,这是因为我使用的是针对Python3.4编译的mod_wsgi,在我的Python3.5.2 virtualenv中,正如上面提到的@Graham Dumpleton。我一直在使用以下工具安装mod_wsgi:
sudo apt-get install libapache2-mod-wsgi-py3
它使用的是我的操作系统附带的Python 3.4(顺便说一句,raspbian jessie)
然而,由于我已经手动安装了Python3.5.2,所以我还需要手动安装mod_wsgi并根据我的3.5.2安装进行编译。以下是我所做的:
mkdir ~/mod_wsgiPy3.5
cd ~/mod_wsgiPy3.5
wget https://pypi.python.org/packages/84/65/44a10ac5e117abc40078575a3dcf3256545ba20495b7330ba59045ec3503/mod_wsgi-4.5.9.tar.gz
tar -zxvf mod_wsgi-4.5.9.tar.gz
cd mod_wsgi-4.5.9/
./configure --with-python=/usr/local/bin/python3
make
sudo make install
在此之后,apache不会重新启动,因为。我发现这是因为我必须在apache中激活这个新安装的mod_wsgi模块。这是通过以下方式实现的:
sudo a2enmod
wsgi
sudo systemctl restart apache2
/etc/apache2/sites available/000-default.conf:
...
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Alias /static /home/user/projects/my_projectMain/my_project/static
<Directory /home/user/projects/my_projectMain/my_project/static>
Require all granted
</Directory>
<Directory /home/user/projects/my_projectMain/my_project/my_project>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess my_project python-path=/home/user/projects python-home=/home/user/projects/my_projectMain/my_projectEnv
WSGIProcessGroup my_project
WSGIScriptAlias / /home/user/projects/my_projectMain/my_project/my_project/wsgi.py
...
...
WSGIDaemonProcess my_project python-path=/home/user/my_projectMain/my_project/my_project python-home=/home/user/my_projectMain/venv
WSGIProcessGroup my_project
WSGIScriptAlias / /home/user/my_projectMain/my_project/my_project/wsgi.py
...
最终目录结构(~/my\u projectMain/):
现在一切都很好。我推荐这本指南,因为它帮了我很多忙:。看起来他们有一些用于各种OSs的用户在我的文件中无处不在。我只是试图泛化上面的所有内容,但却错过了堆栈跟踪中的那一行。WSGIDaemonProcess my_project python path=/home/user/projects/my_projectMain/my_project
产生了相同的错误:ImportError:没有名为“my_project”的模块,只是检查您是否更改了它:这一行中可能也应该是pi
当然实际行使用pi代替userI,我看不出哪里出了问题。您能否以某种方式在wsgi.py
中输出sys.path
变量,以检查python路径值是否实际到达它?可能是通过将其写入一个temp文件。可能是不相关的,但是您不能将针对Python3.4编译的mod_wsgi与使用Python3.5构建的Python虚拟环境一起使用。混流是不好的,会导致各种问题。看看哪一个警告。我也注意到了这一点,并将在以后修复它,只要你认为它与上述问题无关。我会先修复它。如果不正确匹配,则无法保证任何内容。还要检查您的目录/文件是否具有Apache运行用户可以访问的权限。这是一个问题。我的回答中有详细内容。谢谢你的帮助。你是说你放弃了python主页?根据您提供的有关目录结构的其他信息,您更改的python路径
看起来是错误的。你确定你没有改变其他事情?
.
├── my_project
│ ├── app
│ ├── db.sqlite3
│ ├── manage.py
│ ├── my_project
│ └── static
└── venv