PyCharm 2019 arbeitet nicht mehr mit QGIS


14

Seit dem Update auf PyCharm 2019 kann ich die QGIS Python-Module nicht mehr laden. Ich kann auch keine automatische Vervollständigung verwenden. Ich habe den Cache bereits gelöscht (indem ich den Cache in PyCharm ungültig gemacht habe und auch den Ordner "system" im Benutzereinstellungsverzeichnis gelöscht habe), scheint nichts zu funktionieren.

Wenn ich die Python-Konsole in PyCharm starte und "import qgis.core" eingebe, wird der folgende Fehler angezeigt:

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.

Irgendwas scheint kaputt zu sein, in PyCharm 2018.3 war alles in Ordnung. Die sys.path-Umgebungen und die Interpreter-Einstellungen scheinen korrekt zu sein:

['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']

Hat jemand PyCharm auf 2019 aktualisiert und kann dies bestätigen? Ich habe auch die gesamte QGIS-Installation neu installiert, aber nichts scheint zu funktionieren.

Es sieht so aus, als ob die DLLs, die die Stubs enthalten, jetzt nicht kompatibel sind.

Mein Schläger zum Starten von PyCharm sieht folgendermaßen aus:

@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" %*

Zeigen Sie mir Ihre *.batDatei, die Sie zum Ausführen von PyCharm verwenden, das mit QGIS kompatibel ist.
Mr. Che

C:\Program Files\JetBrains\PyCharm Community Edition 2018.2.2\bin\pycharm64.exeverweist auf Ihre neue PyCharm 2019?
Mr. Che

Ja, das tut es. PyCharm startet, aber es scheint nicht möglich zu sein, die QGIS-DLLs zu laden
TheGrudge

Ich habe versucht, PYTHONHOME in C: \ OSGeo4W64 \ etc \ ini \ python-core.bat auf C: \ OSGeo4W64 \ apps \ Python37 zu setzen, aber nichts scheint zu funktionieren.
TheGrudge

Früher hatte ich solche Probleme mit DLLs, aber mit zusätzlichen asyncioBibliotheken. Ich fand, dass ich doppelte identische Bibliotheken im Wurzelverzeichnis C:\OSGeo4W64\libund im Nebenverzeichnis lib anbrachte C:\OSGeo4W64\apps\Python37\lib. Nach dem Entfernen der Side-Lib-Installation (mit PyCharm) wurde das Problem behoben. Aber dein Problem ist nicht identisch.
Mr. Che

Antworten:


2

Aktualisiert

Ich habe PyCharm 2019.3.1 ( ) neu installiert Windows 10(Installation löschen), QGIS 3.10(OSGeo4W-Installation löschen Community Edition Build #PC-193.5662.61, built on December 18, 2019) und bestätige, dass beim Ausführen from qgis._core import *mit PyCharm, das mit dieser *.batDatei gestartet wurde, keine Fehler aufgetreten sind :

@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% %*

Ich habe deine Fledermausdatei genommen und nur den Pfad zu pycharm geändert, aber leider funktioniert es nicht. Ich habe den Cache erneut für ungültig erklärt und das Projekt erneut indiziert, aber die QGIS-Importe funktionieren nicht (derselbe DLL-
Ladefehler

könnte das ein problem sein: PyDev console: starting. Python 3.7.0 (v3.7.0: 1bf9cc5093, 27. Juni 2018, 04:59:51) [MSC v.1914 64-Bit (AMD64)] auf win32 sys.platform 'win32' Ich habe gerade gesehen, dass die Python-Konsole zu sein scheint zu denken, es läuft auf win32
TheGrudge

@ user782457 Hier ist meine Python-Startmeldung (genau wie deine):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
Mr. Che

Ja, ich denke, Python unter Windows sagt Ihnen nicht die richtige Architektur, es scheint andere Module zu geben, die die richtigen Informationen drucken können. Wie auch immer, ich habe QGIS 3.4.6 mit dem Netinstaller und PyCharm 2019 auf einem neuen Computer installiert und kann die DLLs immer noch nicht laden. Es scheint also kein Problem mit meiner Installation zu sein.
TheGrudge

@TheGrudge Jetzt habe ich keine Probleme mit PyCharm. Antwort aktualisiert.
Mr. Che

1

Diese Antwort auf einen Stapelüberlauf weist darauf hin, dass in PyCharm 2019.1 ein bekanntes PyCharm-Problem (mindestens mit Anaconda) vorliegt, das das ImportError: DLL load failed: The specified module could not be foundProblem verursacht.

Es soll in PyCharm 2019.1.2 behoben werden


Leider ist es in 2019.1.3
TheGrudge

1

Edit 1: Scheint nur eine PyCharm 2019.1 Ausgabe zu sein. Als vorübergehende Lösung funktioniert das Startskript mit PyCharm 2018.3.6, das unter https://www.jetbrains.com/pycharm/download/previous.html heruntergeladen werden kann

Dieser Fehler tritt auch bei PyCharm Professional 2019.1 auf, aber es ist möglich, die qgis-Module von einem "normalen" Python zu importieren, der mit denselben Startskript- / Umgebungseinstellungen wie oben beschrieben gestartet wurde:

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

Ich habe dieses Problem überprüft. Funktioniert einwandfrei in PyCharm bis 2018.3.7, unterbrochen in 2019.1.3. Meine Umgebungsvariablen sind korrekt eingerichtet, da ich über die Befehlszeile und frühere Versionen von PyCharm auf die QGIS-Python-Module zugreifen kann, wenn ich sie mit derselben .bat-Datei starte.

Auf jeden Fall ein PyCharm-Fehler. Andere Benutzer haben ähnliche Probleme gemeldet .


Ich bin zurück zu PyCharm 2018.3.7, da ich fast 5 Monate lang nichts zum Arbeiten bringen konnte. Jetzt ist der DLL-Ladefehler verschwunden, ich kann meine Unittests und andere Befehle wieder in PyCharm ausführen. Ich weiß nicht, was sie in 2019.x geändert haben, aber es verursacht nichts als Probleme für mich.
TheGrudge

1

Dies funktioniert immer noch mit PyCharm> = 2019. Möglicherweise müssen Sie nur den Python-Interpreter ändern, auf den Sie in Ihrem PyCharm-Projekt verweisen. Ich benutze die unten stehende .bat-Datei, um PyCharm zu starten und stelle dann den Projekt-Interpreter so ein, dass er darauf zeigt OSGEO4W_ROOT\bin\python-qgis.bat, python3.exeim selben Verzeichnis kann es auch funktionieren.

@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

Zusätzlich zu Jonnys Antwort und TheGrudges 'Kommentar dazu:

Es ist immer noch nicht in PyCharm 2019.2 behoben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.