python - Nginx/Gunicorn/python/matlab 运行时,Worker 无法启动
问题描述
首先,我是初学者,请多多包涵。
我正在尝试使用 Nginx/Gunicorn/Python/Matlab 部署一个 Python Web 应用程序,我正在使用一些打包的 Matlab 库(通过 LibraryCompiler)从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
bash中不设置LD_LIBRARY_PATH,尝试导入打包好的matlab库,会报错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.
请问有什么建议吗?
解决方案
我能够通过在我的 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'
推荐阅读
- powerbi - Power BI - Power Query 编辑器:删除所有重复项(不要留下任何属于重复项的行)
- android - 为什么 expo-updates 不提供 checkForUpdateAsync?
- python - 问题我的子弹没有射向玩家
- c++ - 当基数为浮点数/双精度时,二进制求幂无法正常工作
- react-native - 在本机反应中未从 Firestore 获取数据
- php - Laravel 模型 created_at 显示不一致
- web - 浏览器未为部署在 aws cloudfront 上的 fetch api 设置 cookie
- python - 如何从用户接受逗号分隔的数字序列并生成列表和元组?
- python-3.x - python中循环的可变宽度
- php - PHP 或 cURL 是否以某种方式缓存其 Web 响应?