Среда выполнения Nginx/Gunicorn/python/matlab, Worker не удалось загрузить

Во-первых, я новичок, так что поддержите меня, пожалуйста.

Я пытаюсь развернуть веб-приложение python с помощью Nginx/Gunicorn/Python/Matlab, я использую некоторые упакованные библиотеки Matlab (через LibraryCompiler) для вызова из python с использованием import Matlab package в скрипте Python.

Чтобы импортировать упакованные библиотеки Matlab, мне нужно установить среду выполнения Matlab. После установки среды выполнения Matlab он советует мне установить путь среды выполнения Matlab в LD_LIBRARY_PATH.

Я добавил следующую строку, используя nano ~/.bashrc

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/MATLAB/MATLAB_Runtime/v99/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v99/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v99/sys/os/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v99/extern/bin/glnxa64

Без установки LD_LIBRARY_PATH в баше при попытке импортировать упакованную библиотеку матлаба выдает ошибку RuntimeError: On Linux, you must set the environment variable "LD_LIBRARY_PATH" to a non-empty string. For more details, see the package documentation.

после установки LD_LIBRARY_PATH он отлично работал локально, но когда я использую sudo gunicorn3 app:server, ему не удалось загрузить мой скрипт Python, и он показывает то же сообщение, как если бы я не установил LD_LIBRARY_PATH

вот что мне кажется, когда я пытаюсь запустить свое веб-приложение.

    [2020-12-17 20:48:12 +0000] [29324] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 578, in spawn_worker
    worker.init_process()
  File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 126, in init_process
    self.load_wsgi()
  File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 65, in load
    return self.load_wsgiapp()
  File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 377, in import_app
    __import__(module)
  File "/home/hossamedwee/flaskapplication/app.py", line 30, in <module>
    import cyclo
  File "/usr/local/lib/python3.6/dist-packages/cyclo/__init__.py", line 283, in <module>
    _pir.get_paths_from_os()
  File "/usr/local/lib/python3.6/dist-packages/cyclo/__init__.py", line 175, in get_paths_from_os
    'For more details, see the package documentation.'))
RuntimeError: On Linux, you must set the environment variable "LD_LIBRARY_PATH" to a non-empty string. For more details, see the package documentation.

Пожалуйста, какие-нибудь предложения?


person David Raul    schedule 17.12.2020    source источник


Ответы (1)


Я смог решить такую ​​проблему, добавив эту строку в свой скрипт Python.

os.environ['LD_LIBRARY_PATH'] = '/usr/local/MATLAB/MATLAB_Runtime/v99/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v99/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v99/sys/os/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v99/extern/bin/glnxa64'
person David Raul    schedule 17.12.2020