Django Numpy ImportError с Apache, но не на runserver
Я перепробовал все другие темы и предложенные ими решения, но пока безуспешно.
У меня есть приложение Django с virtualenv и Apache 2.4 и mod_wsgi, которое я разработал на другом сервере. Сейчас я переношу (перестраиваю с нуля) все на другой сервер.
В то время как все остальное работает, когда я попытался установить pandas, приложение, обслуживаемое через Apache, выдает мне ImportError для Numpy.
Original error was: /optilab/env/lib64/python3.6/site-packages/numpy/core/_multiarray_umath.cpython-36m-x86_64-linux-gnu.so:
failed to map segment from shared object
Дело в том, что этого не происходит при использовании runserver с manage.py . Все одинаково: версия Python (3.6.8), исполняемый файл Python (/optilab/env/bin/python), кроме порядка путей Python.
Для тестового сервера это список Python Path:
['/optilab',
'/optilab/env/lib64/python3.6/site-packages',
'/usr/lib64/python36.zip',
'/usr/lib64/python3.6',
'/usr/lib64/python3.6/lib-dynload',
'/optilab/env/lib64/python3.6/site-packages',
'/optilab/env/lib/python3.6/site-packages',
'/home/appuser/.local/lib/python3.6/site-packages',
'/usr/local/lib64/python3.6/site-packages',
'/usr/local/lib/python3.6/site-packages',
'/usr/lib64/python3.6/site-packages',
'/usr/lib/python3.6/site-packages',
'/env/lib64/python3.6/site-packages']
Но для приложения, обслуживаемого через Apache, Python Path имеет следующий вид:
['/optilab',
'/optilab/core',
'/usr/lib64/python36.zip',
'/usr/lib64/python3.6',
'/usr/lib64/python3.6/lib-dynload',
'/optilab/env/lib64/python3.6/site-packages',
'/optilab/env/lib/python3.6/site-packages',
'/usr/local/lib64/python3.6/site-packages',
'/usr/local/lib/python3.6/site-packages',
'/usr/lib64/python3.6/site-packages',
'/usr/lib/python3.6/site-packages']
Я подозреваю, что виновником этой проблемы является порядок списка, но, похоже, я не могу его изменить.
Структура моего файла следующая:
/optilab
/core <-- startproject directory
/env <-- virtualenv files
/static
/media
... other apps
Вот первая часть конфигурации моего apache (BTW, я пытался использовать python-path в WSGIDaemonProcess, но это не помогло):
WSGIPythonPath /optilab/env/lib64/python3.6/site-packages:/optilab/env/lib/python3.6/site-packages:/optilab:/optilab/core
<VirtualHost *:80>
ServerName optilab
WSGIDaemonProcess optilab python-home=/optilab/env
WSGIProcessGroup optilab
WSGIApplicationGroup %{GLOBAL}
WSGIScriptAlias / /optilab/core/wsgi.py
<Directory /optilab>
Require all granted
</Directory>
<Directory /optilab/core>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
....
Я перепробовал все, но ничего не помогло.