我正在使用mod_wsgi在针对Python 3.4的虚拟环境中运行Django。我有numpy 1.9,我收到此错误:
**Request Method: GET
Django Version: 1.7.1
Exception Type: ImportError
Exception Value:
cannot import name multiarray
Exception Location: /var/www/mapsite/lib/python3.4/site-packages/numpy/core/__init__.py in <module>, line 6
Python Executable: /usr/bin/python
Python Version: 2.7.5
Python Path:
['/var/www/mapsite/lib/python3.4/site-packages',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode',
'/var/www/mysite']
Server time: Wed, 3 Dec 2014 09:07:24 +0000**
请指教
首先,您需要确保您处于安装numpy,Django等的合适环境中。根据您提供的信息,我假设您有一个virtualenv并且正在开发您的应用程序。如果假设是正确的,您可以按照以下步骤操作。
你不需要Apache。
source /path/to/env/bin/activate
并转到你的项目目录。pip freeze
会告诉你,必要时安装。python manage.py runserver
http://localhost:8000
瞧!
您应该调整Apache和/或mod_wsgi配置。
在您展示的行中,可以看到正在使用Python 2.7,但它正在与来自Python 3.4虚拟环境的包结合使用。这是完全错误的,应予以解决。
要解决这个问题,最简单的方法是使用以下python二进制文件:
/var/www/mapsite/bin/python3.4
而不是默认值
/usr/bin/python
使用显式虚拟环境二进制文件是这种情况下的方法(至少,它在很多类似的场景中对我有用)。