Pandas Django mod_wsgi virtualenv

#django #mod-wsgi #virtualenv #pandas

#django #мод-wsgi #virtualenv #панды

Вопрос:

Pandas создает объект ‘module’, у которого нет атрибута ‘core’ при импорте в django mod_wsgi виртуальную среду и внутри нее. Он отлично работает под django управлением сервера разработки внутри виртуальной среды.

Другие модули, например: numpy, не имеют проблем, поэтому я предполагаю, что это означает, что виртуальная среда настроена правильно mod_wsgi . Любые советы будут оценены.

staging.wsgi

 import os
import sys
import site

PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
site_packages = os.path.join(PROJECT_ROOT, 'env/openportfolio/lib/python2.7/site-packages')
site.addsitedir(os.path.abspath(site_packages))
sys.path.insert(0, PROJECT_ROOT)
sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
os.environ['DJANGO_SETTINGS_MODULE'] = 'openportfolio.settings_staging'

import pandas #triggers error
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
  

Ошибка

 Traceback (most recent call last):
  File "/usr/local/web/django/www/staging/openportfolio/apache/staging.wsgi", line 22, in <module>
    import pandas
  File "/usr/local/web/django/www/staging/env/openportfolio/lib/python2.7/site-packages/pandas/__init__.py", line 12, in <module>
    from pandas.core.api import *
  File "/usr/local/web/django/www/staging/env/openportfolio/lib/python2.7/site-packages/pandas/core/api.py", line 6, in <module>
    import pandas.core.datetools as datetools
  AttributeError: 'module' object has no attribute 'core'  
  

Путь к Python

 ['/usr/local/web/django/www/staging/openportfolio',
 '/usr/local/web/django/www/staging',
 '/Library/Python/2.7/site-packages/pip-1.0.2-py2.7.egg',
 '/usr/local/web/django/www/staging/env/openportfolio/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg',
 '/usr/local/web/django/www/staging/env/openportfolio/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg',
 '/usr/local/web/django/www/staging/env/openportfolio/lib/python2.7/site-packages/matplotlib-1.1.0-py2.7-macosx-10.7-intel.egg',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC',
 '/Library/Python/2.7/site-packages',
 '/usr/local/web/django/www/staging/env/openportfolio/lib/python2.7/site-packages']
  

Комментарии:

1. Вы уверены, что у вас есть все зависимости и вы создали расширения C? Обычно я вижу подобные ошибки, когда что-то, от чего зависит pandas, не удалось импортировать

2. Он импортирует нормально и запускается, когда не используется mod_wsgi, так что, похоже, это проблема. Я установил через pip.

Ответ №1:

Оказывается, это была проблема с порядком следования в Python. Запустив sys.path.reverse() в моем конфигурационном файле wsgi, код теперь выполняется.

Из-за порядка пути Python встроенная библиотека OS X numpy должна была быть импортирована первой в виртуальную среду, вызывающую проблему.

«Ошибка выполнения: модуль скомпилирован для версии API 6, но эта версия numpy равна 4» — это строка ошибки, которую я пропустил в своем исходном сообщении, которая могла бы помочь отладить ответ.