Open koukita opened 1 year ago
いつもお世話になっております、私も同じようなエラーが出るようになりました。 別のQGISのバージョンとGSI-VTDownloderを組み合わせても同様でした。 解決策があれば教えていただけると助かります、どうぞよろしくお願いします。 現在は、windows10 pro(64bit)と、windows11 home(64bit)で試しています。
classFactory()メソッドの呼び出し時にエラーが発生したためプラグイン 'GSI-VTDownloader-master'を読み込めませんでした
ImportError: cannot import name 'WKBWriter' from 'shapely.geos' (C:\PROGRA~1\QGIS33~1.1\apps\Python39\lib\site-packages\shapely\geos.py) Traceback (most recent call last): File "C:\PROGRA~1/QGIS33~1.1/apps/qgis/./python\qgis\utils.py", line 423, in _startPlugin plugins[packageName] = package.classFactory(iface) File "C:\Users/t3189/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\GSI-VTDownloader-master__init__.py", line 35, in classFactory from .vtdownloader import VTDownloader File "C:\PROGRA~1/QGIS33~1.1/apps/qgis/./python\qgis\utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) File "C:\Users/t3189/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\GSI-VTDownloader-master\vtdownloader.py", line 30, in from .vtdownloader_dialog import VTDownloaderDialog File "C:\PROGRA~1/QGIS33~1.1/apps/qgis/./python\qgis\utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) File "C:\Users/t3189/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\GSI-VTDownloader-master\vtdownloader_dialog.py", line 33, in from .gsi_geojson_generator import GsiGeojsonGenerator File "C:\PROGRA~1/QGIS33~1.1/apps/qgis/./python\qgis\utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) File "C:\Users/t3189/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\GSI-VTDownloader-master\gsi_geojson_generator.py", line 14, in from .exlib.shapely import geometry as shapely_geometry File "C:\PROGRA~1/QGIS33~1.1/apps/qgis/./python\qgis\utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) File "C:\Users/t3189/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\GSI-VTDownloader-master\exlib\shapely\geometry__init__.py", line 4, in from .base import CAP_STYLE, JOIN_STYLE File "C:\PROGRA~1/QGIS33~1.1/apps/qgis/./python\qgis\utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) File "C:\Users/t3189/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\GSI-VTDownloader-master\exlib\shapely\geometry\base.py", line 20, in from shapely.geos import WKBWriter, WKTWriter ImportError: cannot import name 'WKBWriter' from 'shapely.geos' (C:\PROGRA~1\QGIS33~1.1\apps\Python39\lib\site-packages\shapely\geos.py)
Pythonバージョン: 3.9.5 (tags/v3.9.5:0a7dcbd, May 3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)] QGISバージョン: 3.34.1-Prizren Prizren, 133927424d
Pythonパス: C:/PROGRA~1/QGIS33~1.1/apps/qgis/./python C:/Users/t3189/AppData/Roaming/QGIS/QGIS3\profiles\default/python C:/Users/t3189/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins C:/PROGRA~1/QGIS33~1.1/apps/qgis/./python/plugins C:\PROGRA~1\QGIS33~1.1\apps\grass\grass83\etc\python C:\Users\t3189\Documents C:\Program Files\QGIS 3.34.1\bin\python39.zip C:\PROGRA~1\QGIS33~1.1\apps\Python39\DLLs C:\PROGRA~1\QGIS33~1.1\apps\Python39\lib C:\Program Files\QGIS 3.34.1\bin C:\PROGRA~1\QGIS33~1.1\apps\Python39 C:\PROGRA~1\QGIS33~1.1\apps\Python39\lib\site-packages C:\PROGRA~1\QGIS33~1.1\apps\Python39\lib\site-packages\win32 C:\PROGRA~1\QGIS33~1.1\apps\Python39\lib\site-packages\win32\lib C:\PROGRA~1\QGIS33~1.1\apps\Python39\lib\site-packages\Pythonwin C:/Users/t3189/AppData/Roaming/QGIS/QGIS3\profiles\default/python
QGISに内蔵されているShapelyのバージョンが上がったことで、一部の関数が削除されたことが原因と思われます。 古いバージョンのQGIS(Shapely<2.0.0)を利用することが、単純な迂回策となります。
ちゃんとした対応のためには:
ご助言ありがとうございました。古いバージョンのQGISとクリーンインストールしたwindows10を準備して試してみたいと思います。
現行の GSI-VTDownloader は ./exlib
の中に shapely 1.8dev を同梱していますが、この shapely 内部での
from shapely.geos import WKBWriter, WKTWriter
といった自身の呼び出しに際し、 QGIS 同梱の
新しいバージョンの shapely を読みにいってしまい、バージョン齟齬でエラーが生じているようです。
対症療法的には __init__.py
の冒頭あたりで下記を記載し、 ./exlib
の優先度をあげ、プラグイン同梱の
shapely が確実に使用されるようにする方法。
import sys, os
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'exlib'))
あるいは ./exlib/shapely
を削除し、また gsi_geojson_generator.py
でもシステムの方の
shapely を使うようにする方法。
--- gsi_geojson_generator.py.org 2024-05-02 21:26:06.131702800 +0900
+++ gsi_geojson_generator.py 2024-05-02 21:26:19.774687900 +0900
@@ -13,3 +13,3 @@
from .exlib import tiletanic
-from .exlib.shapely import geometry as shapely_geometry
+from shapely import geometry as shapely_geometry
from . import settings
上記いずれかで、回避できていそうな感じです。 ただ古いバージョンなどでの動作確認はできておりません。
プラグインを有効にすると、次のエラーが出ます。 プラグインのバージョンは0.2.2
===================== classFactory()メソッドの呼び出し時にエラーが発生したためプラグイン 'GSI-VTDownloader-master'を読み込めませんでした
ImportError: cannot import name 'WKBWriter' from 'shapely.geos' (C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\shapely\geos.py) Traceback (most recent call last): File "C:\PROGRA~1/QGIS32~1.6/apps/qgis-ltr/./python\qgis\utils.py", line 423, in _startPlugin plugins[packageName] = package.classFactory(iface) File "C:\Users/user_name/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\GSI-VTDownloader-master__init__.py", line 35, in classFactory from .vtdownloader import VTDownloader File "C:\PROGRA~1/QGIS32~1.6/apps/qgis-ltr/./python\qgis\utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) File "C:\Users/user_name/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\GSI-VTDownloader-master\vtdownloader.py", line 30, in from .vtdownloader_dialog import VTDownloaderDialog File "C:\PROGRA~1/QGIS32~1.6/apps/qgis-ltr/./python\qgis\utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) File "C:\Users/user_name/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\GSI-VTDownloader-master\vtdownloader_dialog.py", line 33, in from .gsi_geojson_generator import GsiGeojsonGenerator File "C:\PROGRA~1/QGIS32~1.6/apps/qgis-ltr/./python\qgis\utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) File "C:\Users/user_name/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\GSI-VTDownloader-master\gsi_geojson_generator.py", line 14, in from .exlib.shapely import geometry as shapely_geometry File "C:\PROGRA~1/QGIS32~1.6/apps/qgis-ltr/./python\qgis\utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) File "C:\Users/user_name/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\GSI-VTDownloader-master\exlib\shapely\geometry__init__.py", line 4, in from .base import CAP_STYLE, JOIN_STYLE File "C:\PROGRA~1/QGIS32~1.6/apps/qgis-ltr/./python\qgis\utils.py", line 888, in _import mod = _builtin_import(name, globals, locals, fromlist, level) File "C:\Users/user_name/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\GSI-VTDownloader-master\exlib\shapely\geometry\base.py", line 20, in from shapely.geos import WKBWriter, WKTWriter ImportError: cannot import name 'WKBWriter' from 'shapely.geos' (C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\shapely\geos.py)
Pythonバージョン: 3.9.5 (tags/v3.9.5:0a7dcbd, May 3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)] QGISバージョン: 3.28.6-Firenze Firenze, 868c9fa03b
Pythonパス: C:\Users/user_name/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\inyouzuMaker C:\Users/user_name/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\hxmlimport C:/PROGRA~1/QGIS32~1.6/apps/qgis-ltr/./python C:/Users/user_name/AppData/Roaming/QGIS/QGIS3\profiles\default/python C:/Users/user_name/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins C:/PROGRA~1/QGIS32~1.6/apps/qgis-ltr/./python/plugins C:\PROGRA~1\QGIS32~1.6\apps\grass\grass82\etc\python C:\Users\user_name\Documents C:\Program Files\QGIS 3.28.6\bin\python39.zip C:\PROGRA~1\QGIS32~1.6\apps\Python39\DLLs C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib C:\Program Files\QGIS 3.28.6\bin C:\Users\user_name\AppData\Roaming\Python\Python39\site-packages C:\PROGRA~1\QGIS32~1.6\apps\Python39 C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\win32 C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\win32\lib C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\Pythonwin C:/Users/user_name/AppData/Roaming/QGIS/QGIS3\profiles\default/python C:\Users/user_name/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\qgis2web C:\Users\user_name\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins . C:/Users/user_name/AppData/Roaming/QGIS/QGIS3/profiles/default =====================ここまで