PyCharm 2019不再与QGIS一起使用


14

自从PyCharm 2019更新以来,我无法加载QGIS Python模块。我也不能使用自动完成功能。我已经删除了缓存(通过使PyCharm中的缓存无效并且还通过删除用户设置目录中的“ system”文件夹),似乎没有任何作用。

在PyCharm中启动Python控制台并键入“ import qgis.core”时,出现以下错误:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.2.2\helpers\pydev\_pydev_bundle\pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "C:\OSGEO4~1\apps\qgis-ltr\python\qgis\core\__init__.py", line 27, in <module>
    from qgis._core import *
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.2.2\helpers\pydev\_pydev_bundle\pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden.

在PyCharm 2018.3中似乎有些问题,一切正常。sys.path环境和解释器设置似乎正确:

['C:\\Program Files\\JetBrains\\PyCharm Community Edition '
 '2018.2.2\\helpers\\pydev',
 'C:\\OSGEO4~1\\apps\\qgis-ltr\\python',
 'C:\\OSGEO4~1\\apps\\qgis-ltr\\python\\plugins',
 'C:\\Program Files\\JetBrains\\PyCharm Community Edition '
 '2018.2.2\\helpers\\third_party\\thriftpy',
 'C:\\Program Files\\JetBrains\\PyCharm Community Edition '
 '2018.2.2\\helpers\\pydev',
 'C:\\OSGeo4W64\\apps\\Python37\\python37.zip',
 'C:\\OSGEO4~1\\apps\\Python37\\DLLs',
 'C:\\OSGEO4~1\\apps\\Python37\\lib',
 'C:\\OSGeo4W64\\apps\\Python37',
 'C:\\OSGEO4~1\\apps\\Python37',
 'C:\\OSGEO4~1\\apps\\Python37\\lib\\site-packages',
 'C:\\OSGEO4~1\\apps\\Python37\\lib\\site-packages\\win32',
 'C:\\OSGEO4~1\\apps\\Python37\\lib\\site-packages\\win32\\lib',
 'C:\\OSGEO4~1\\apps\\Python37\\lib\\site-packages\\Pythonwin']

有没有人将PyCharm更新到2019年并且可以确认这一点?我还重新安装了整个QGIS安装程序,但似乎没有任何效果。

看起来包含存根的DLL现在不兼容?

我启动PyCharm的方法如下:

@echo off
SET OSGEO4W_ROOT=C:\OSGeo4W64
call "%OSGEO4W_ROOT%"\bin\o4w_env.bat
call "%OSGEO4W_ROOT%"\apps\grass\grass-7.4.2\etc\env.bat
@echo off
path %PATH%;%OSGEO4W_ROOT%\apps\qgis\bin
path %PATH%;%OSGEO4W_ROOT%\apps\grass\grass-7.4.2\lib
path %PATH%;%OSGEO4W_ROOT%\apps\Qt5\bin
path %PATH%;%OSGEO4W_ROOT%\apps\Python37\Scripts
path %PATH%;C:\Program Files\Docker\Docker\Resources\bin
path %PATH%;C:\Program Files\7-Zip

set QT_PLUGIN_PATH=C:\OSGeo4W64\apps\Qt5\plugins

set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\qgis-ltr\python
set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\qgis-ltr\python\plugins
set PYTHONHOME=%OSGEO4W_ROOT%\apps\Python37

start "PyCharm aware of Quantum GIS" /B "C:\Program Files\JetBrains\PyCharm Community Edition 2018.2.2\bin\pycharm64.exe" %*

请告诉我您*.bat用于运行PyCharm的文件,该文件与QGIS兼容。
车先生

C:\Program Files\JetBrains\PyCharm Community Edition 2018.2.2\bin\pycharm64.exe指向您的新PyCharm 2019?
车先生

是的,确实如此。.PyCharm正在启动,但似乎无法加载qgis DLL
TheGrudge

我试图将C:\ OSGeo4W64 \ etc \ ini \ python-core.bat中的PYTHONHOME设置为C:\ OSGeo4W64 \ apps \ Python37,但似乎没有任何效果。
TheGrudge '19

我曾经在DLL中遇到过此类问题,但在使用其他asyncio库时却遇到了此类问题。我发现我在根目录C:\OSGeo4W64\lib和边目录lib中安装了两个相同的库C:\OSGeo4W64\apps\Python37\lib。删除侧面lib安装(使用PyCharm)后,问题已解决。但是您的问题并不完全相同。
车先生

Answers:


2

更新

我重新安装了Windows 10(清除安装),QGIS 3.10(清除了OSGeo4W安装),PyCharm 2019.3.1(Community Edition Build #PC-193.5662.61, built on December 18, 2019),并确认执行from qgis._core import *以该*.bat文件启动的PyCharm时没有错误:

@ECHO off

set OSGEO4W_ROOT=C:\OSGeo4W64

call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
call "%OSGEO4W_ROOT%\bin\qt5_env.bat"
call "%OSGEO4W_ROOT%\bin\py3_env.bat"

path %OSGEO4W_ROOT%\apps\qgis\bin;%PATH%
set QGIS_PREFIX_PATH=%OSGEO4W_ROOT%\apps\qgis

set GDAL_FILENAME_IS_UTF8=YES

set VSI_CACHE=TRUE
set VSI_CACHE_SIZE=1000000
set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\qgis\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins

SET PYCHARM="C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.1\bin\pycharm64.exe"

set PYTHONPATH=%OSGEO4W_ROOT%\apps\qgis\python
set PYTHONHOME=%OSGEO4W_ROOT%\apps\Python37
set PYTHONPATH=%OSGEO4W_ROOT%\apps\Python37\lib\site-packages;%PYTHONPATH%

set QT_QPA_PLATFORM_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\Qt5\plugins\platforms
set QGIS_PREFIX_PATH=%OSGEO4W_ROOT%\apps\qgis

start "PyCharm aware of QGIS" /B %PYCHARM% %*

我拿起了您的bat文件,仅将路径更改为pycharm,但不幸的是它无法正常工作。我再次使缓存无效并重新索引了该项目,但QGIS导入无法正常工作(相同的DLL加载错误)
TheGrudge

可能是一个问题:PyDev控制台:正在启动。Win32 sys.platform'win32'上的Python 3.7.0(v3.7.0:1bf9cc5093,Jun 27 2018,04:59:51)[MSC v.1914 64位(AMD64)]我刚刚看到python控制台似乎认为它在win32上运行
TheGrudge '19

@ user782457这是我的python启动消息(与您的消息相同):PyDev console: starting. Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Che先生

是的,我想Windows下的Python不能告诉您正确的体系结构,似乎还有其他模块可以打印正确的信息。无论如何,我在新计算机上安装了带有netinstaller和PyCharm 2019的QGIS 3.4.6,但仍然无法加载DLL。因此,我的安装似乎没有问题。
TheGrudge

@TheGrudge现在我对PyCharm没有任何问题。答案已更新。
车先生


1

编辑1:似乎只是PyCharm 2019.1问题。作为临时解决方案,开始脚本可与PyCharm 2018.3.6配合使用,可以从https://www.jetbrains.com/pycharm/download/previous.html下载

PyCharm Professional 2019.1也会发生此错误,但是可以从“正常”的python导入qgis模块,该python使用与上述相同的启动脚本/环境设置启动:

set OSGEO4W_ROOT=C:\Program Files\QGIS 3.6
set PYCHARM="C:\Program Files\JetBrains\PyCharm 2019.1.1\bin\pycharm64.exe"
@ECHO off

call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
call "%OSGEO4W_ROOT%\bin\qt5_env.bat"
call "%OSGEO4W_ROOT%\bin\py3_env.bat"

path %OSGEO4W_ROOT%\apps\qgis\bin;%PATH%
set QGIS_PREFIX_PATH=%OSGEO4W_ROOT%\apps\qgis

set GDAL_FILENAME_IS_UTF8=YES

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
set PYTHONHOME=%OSGEO4W_ROOT%\apps\Python37
set PYTHONPATH=%OSGEO4W_ROOT%\apps\Python37\lib\site-packages;%PYTHONPATH%

set QT_QPA_PLATFORM_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\Qt5\plugins\platforms
set QGIS_PREFIX_PATH=%OSGEO4W_ROOT%\apps\qgis

:: A python able to call "import qgis.core"
start python

:: A python unable to call "import qgis.core"
start "PyCharm unfortunatelley not-aware of QGIS" /B %PYCHARM% %*

1

我已经验证了这个问题。在PyCharm中可以正常工作到2018.3.7,在2019.1.3中已打破。我的环境变量设置正确,因为当使用相同的.bat文件启动它们时,我可以通过命令行和PyCharm的早期版本访问QGIS python模块。

绝对是PyCharm错误。其他用户也报告了类似的问题


我回到PyCharm 2018.3.7,因为我在近5个月的时间内都无法正常工作。现在,DLL加载错误消失了,我可以再次在PyCharm中运行我的unittests和其他命令。我不知道他们在2019.x中做了什么更改,但这对我来说没有任何问题。
TheGrudge

1

这仍然适用于PyCharm> =2019。您可能只需要更改在PyCharm项目中引用的Python解释器。我使用下面的.bat文件启动PyCharm,然后将项目解释器指向OSGEO4W_ROOT\bin\python-qgis.batpython3.exe在相同目录下也可以使用。

@echo off
SET OSGEO4W_ROOT=C:\OSGeo4W64
call "%OSGEO4W_ROOT%"\bin\o4w_env.bat

@echo off
path %PATH%;%OSGEO4W_ROOT%\apps\qgis\bin
path %PATH%;%OSGEO4W_ROOT%\apps\grass\grass-7.6.0\lib
path %PATH%;C:\OSGeo4W64\apps\Qt5\bin
path %PATH%;C:\OSGeo4W64\apps\Python37\Scripts

set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\qgis\python
set PYTHONHOME=%OSGEO4W_ROOT%\apps\Python37

set PATH=C:\Program Files\Git\bin;%PATH%

start "PyCharm aware QGIS" /B "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2.2\bin\pycharm64.exe" %*

0

除了Jonny的回答和TheGrudges的评论之外:

PyCharm 2019.2仍未修复

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.