在QGIS插件中安装geopandas遇numpy版本兼容及重载错误
在QGIS插件中使用Geopandas遇到的版本兼容与导入问题
操作流程
- 创建虚拟环境(venv)
- 安装geopandas
- 将虚拟环境的site-packages目录添加至Python路径
- 导入geopandas
问题详情
执行上述步骤后触发版本兼容报错:当前numpy版本为1.21.5,而安装的pandas版本要求numpy≥1.22.4。尝试通过importlib.reload()重载numpy以调用虚拟环境中的高版本时,又出现无法从numpy._globals导入_CopyMode的错误,怀疑QGIS的qgis/utils.py中的_import方法干扰了正常导入逻辑,目前无解决思路。
相关代码与报错信息
原安装代码
# sys.executable - QGIS Python解释器路径 # venv_path - 虚拟环境路径 # venv_pip_path - 虚拟环境中pip的路径 # venv_site_packages_path - 虚拟环境site-packages路径 import sys import subprocess from importlib import import_module subprocess.run([sys.executable, "-m", "venv", "--copies", venv_path], check=True) subprocess.run([venv_pip_path, "install", "geopandas"], check=True) sys.path.insert(0, venv_site_packages_path) import_module("geopandas")
版本兼容报错
ImportError: this version of pandas is incompatible with numpy < 1.22.4 your numpy version is 1.21.5. Please upgrade numpy to >= 1.22.4 to use this pandas version
重载numpy代码
from sys import modules import importlib importlib.reload(modules['numpy'])
重载报错
File "/usr/lib/python3.10/importlib/__init__.py", line 169, in reload _bootstrap._exec(spec, module) File "<frozen importlib._bootstrap>", line 619, in _exec File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "/home/sam/test/numpy/__init__.py", line 105, in <module> from ._globals import _NoValue, _CopyMode ImportError: cannot import name '_CopyMode' from 'numpy._globals' (/usr/lib/python3/dist-packages/numpy/_globals.py)
怀疑的干扰代码
File "/usr/lib/python3/dist-packages/qgis/utils.py", line 923, in _import mod = _builtin_import(name, globals, locals, fromlist, level)
内容的提问来源于stack exchange,提问作者TheFunEmbargo
相关产品推荐
相关产品推荐

