【问题标题】:QGIS python returning non-zero exit status 1 trying to create a venvQGIS python返回非零退出状态1试图创建一个venv
【发布时间】:2022-07-04 19:49:37
【问题描述】:

根据this blog post here,我正在尝试使用 QGIS 3.22.6 附带的 Python 解释器设置 venv。但是,当我执行特定命令时,出现以下错误:

C:\Source\experiments\qgistest>C:\QGIS\bin\python-qgis-ltr.bat -m venv .venv
Error: Command '['C:\\Source\\experiments\\qgistest\\.venv\\Scripts\\python.exe', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.

关于 SO 的类似问题表明 venv 包不存在,或者它是与 ensurepip 相关的错误,但对于前者,指定的 .venv 文件夹确实被创建(部分)和ensurepip 也同样执行。遗憾的是,我没有得到任何进一步的指标,这可能是什么问题。

【问题讨论】:

  • 如您在问题中链接的博文中所述:“当前安装程序(也称为新的 OSGeo4W V2 安装程序)尚不受此设置支持,因为在撰写本文时存在一些问题了解 python 3.9 如何处理 dll 加载。"

标签: python windows qgis python-venv pyqgis


【解决方案1】:

免责声明:我不太熟悉虚拟环境的工作方式或 QGIS 的构建方式,但通过反复试验,我设法让以下内容在 Windows 10 上运行。

  1. 通过 .exe 下载/安装 qgis
  2. 创建自定义安装批处理文件。从 python-qgis.bat(分布在 /bin 中)开始,然后将 python/plugins 和 QGIS DLL 路径添加到 PYTHONPATH(请参阅下面的批处理脚本)。根据构建的复杂程度(例如,使用 GRASS),您可能需要更多环境变量。
  3. 运行批处理文件并测试 python 构建和运行是否正确(例如,import processing
  4. 在没有 pip 的情况下构建虚拟环境* python -m venv --without-pip .venv/myvenv
  5. 编辑 venv 配置文件 (pyvenv.cfg) 并设置 include-system-site-packages = true
  6. 激活 venv 并测试 python 构建和运行。您应该能够通过 pip 将新包安装到此 venv 中(这些包将显示在 myvenv/Lib/site-packages 中)
set IDIR=C:\Program Files\QGIS 3.26.0
set QREL=qgis
set PYVER=Python39


REM adapted from C:\Program Files\QGIS 3.26.0\bin\python-qgis.bat
@echo off
call "%IDIR%\bin\o4w_env.bat"
@echo off
path %OSGEO4W_ROOT%\apps\qgis\bin;%PATH%
set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/qgis
set GDAL_FILENAME_IS_UTF8=YES
rem Set VSI cache to be used as buffer, see #6448
set VSI_CACHE=TRUE
set VSI_CACHE_SIZE=1000000
set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\qgis\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins
set PYTHONPATH=%OSGEO4W_ROOT%\apps\qgis\python;%PYTHONPATH%

REM ==========================================
REM add QGIS dlls
REM ==========================================
set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\%QREL%\python\plugins
set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\%PYVER%\
set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\%PYVER%\DLLs
set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\%PYVER%\lib
set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\%PYVER%\lib\site-packages

我认为由于评论者提到的 python 3.9 DLL 错误,需要这些解决方法。

*注意:我不确定为什么需要这种解决方法......因为 pip 似乎工作正常。也不确定为什么此解决方法不适用于 OSGEO 构建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-13
    • 2019-10-02
    • 2020-10-24
    • 2021-12-04
    • 2017-05-20
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多