如何解决使用initQgis时出现分段错误11-MacOS
我正在macOS Catalina v.10.15.7上使用QGIS.3.16
运行以下代码时出现问题
export PATH=/Applications/QGIS.app/Contents/MacOS/bin
export PYTHONPATH=/Applications/QGIS.app/Contents/Resources/python
export LD_LIBRARY_PATH=/Applications/QGIS.app/lib
export DYLD_LIBRARY_PATH=/Applications/QGIS.app/lib
export QT_QPA_PLATFORM_PLUGIN_PATH=/Applications/QGIS.app/Contents/PlugIns/platforms
python3
## IMPORT QGIS
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from qgis.core import *
from qgis.gui import *
from qgis.core import QgsApplication
# SET UP ENV
qgishome = "/Applications/QGIS.app/Contents/MacOS"
QgsApplication.setPrefixPath(qgishome,True)
app = QgsApplication([],False)
app.initQgis()
当我在终端中运行此程序时,出现以下错误代码
Segmentation fault: 11
我知道11表示第11行,那是app.initQgis(),因此此处无法正常工作。
我在Jupyter Notebook中运行了相同的代码,但随后未出现错误。我尝试重新启动计算机以“清理”内存,但仍然是相同的错误。
此外,我在使用QGIS.3.14时使用了相同的代码,效果很好,但是现在每次都出现错误。
有什么想法可能有问题吗?
*****************************编辑****************** ******************
继续。我安装了QGIS3.10 LTR并尝试了相同的操作,然后没有出现该错误。但是我必须添加GDAL_PATH才能打开shapefile。
# Set Paths
export PATH=/Applications/QGIS3.10.app/Contents/MacOS/bin
export PYTHONPATH=/Applications/QGIS3.10.app/Contents/Resources/python
export LD_LIBRARY_PATH=/Applications/QGIS3.10.app/lib
export DYLD_LIBRARY_PATH=/Applications/QGIS3.10.app/lib
export QT_QPA_PLATFORM_PLUGIN_PATH=/Applications/QGIS3.10.app/Contents/PlugIns/platforms/
export GDAL_DATA=/Applications/QGIS3.10.app/Contents/Resources/gdal
python3
## IMPORT QGIS
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from qgis.core import *
from qgis.gui import *
from qgis.core import QgsApplication
# SET UP ENV
qgishome = "/Applications/QGIS3.10.app/Contents/MacOS"
QgsApplication.setPrefixPath(qgishome,False)
app.initQgis()
解决方法
脚本正在选择与捆绑的 QGIS 的 sqlite 库不兼容的系统 sqlite。通过以下方式强制脚本预加载 QGIS 的版本:
export DYLD_INSERT_LIBRARIES=/Applications/QGIS$QGIS_VERSION.app/Contents/MacOS/lib/libsqlite3.dylib
,
此导出确实停止分段错误
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。