使用 initQgis() 时出现分段错误 11 - MacOS
Segmentation Fault 11 when using initQgis() - 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, True)
app = QgsApplication([],False)
app.initQgis()
脚本正在选择与捆绑的 QGIS 的 sqlite 库不兼容的系统 sqlite。通过以下方式强制脚本预加载 QGIS 的版本:
export DYLD_INSERT_LIBRARIES=/Applications/QGIS$QGIS_VERSION.app/Contents/MacOS/lib/libsqlite3.dylib
我在 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, True)
app = QgsApplication([],False)
app.initQgis()
脚本正在选择与捆绑的 QGIS 的 sqlite 库不兼容的系统 sqlite。通过以下方式强制脚本预加载 QGIS 的版本:
export DYLD_INSERT_LIBRARIES=/Applications/QGIS$QGIS_VERSION.app/Contents/MacOS/lib/libsqlite3.dylib