PyCharm 2019 ne fonctionne plus avec QGIS


14

Depuis la mise à jour de PyCharm 2019, je ne peux pas charger les modules QGIS Python. Je ne peux pas non plus utiliser la saisie semi-automatique. J'ai déjà supprimé le cache (en invalidant le cache dans PyCharm et également en supprimant le dossier "system" dans le répertoire des paramètres utilisateur), rien ne semble fonctionner.

Au démarrage de la console Python à l'intérieur de PyCharm et en tapant "import qgis.core", j'obtiens l'erreur suivante:

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.

Quelque chose semble être cassé, dans PyCharm 2018.3 tout allait bien. Les environnements sys.path et les paramètres d'interpréteur semblent être corrects:

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

Quelqu'un a-t-il mis à jour PyCharm en 2019 et peut-il le confirmer? J'ai également réinstallé toute l'installation de QGIS, mais rien ne semble fonctionner.

Il semble que les DLL contenant les stubs sont incompatibles maintenant?

Ma batte pour démarrer PyCharm ressemble à ceci:

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

Montrez-moi votre *.batfichier que vous utilisez pour exécuter PyCharm, compatible avec QGIS.
M. Che

C:\Program Files\JetBrains\PyCharm Community Edition 2018.2.2\bin\pycharm64.exepointe vers votre nouveau PyCharm 2019?
M. Che

oui, c'est le cas .. PyCharm démarre, mais il semble qu'il ne soit pas en mesure de charger les DLL
qgis

J'ai également essayé de définir PYTHONHOME dans C: \ OSGeo4W64 \ etc \ ini \ python-core.bat sur C: \ OSGeo4W64 \ apps \ Python37, mais rien ne semble fonctionner.
TheGrudge

J'avais l'habitude d'avoir de tels problèmes avec les DLL, mais avec des asynciobibliothèques supplémentaires . J'ai trouvé que j'avais installé des bibliothèques doubles identiques dans le répertoire racine C:\OSGeo4W64\libet le répertoire latéral lib C:\OSGeo4W64\apps\Python37\lib. Après avoir supprimé l'installation de la bibliothèque latérale (à l'aide de PyCharm), le problème a été résolu. Mais votre problème n'est pas identique.
M. Che

Réponses:


2

Mis à jour

J'ai réinstallé Windows 10(installation claire), QGIS 3.10(installation OSGeo4W claire), PyCharm 2019.3.1 ( Community Edition Build #PC-193.5662.61, built on December 18, 2019) et je confirme que je n'ai aucune erreur lors de l'exécution from qgis._core import *avec PyCharm lancé avec un tel *.batfichier:

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

J'ai pris votre fichier bat et n'ai changé que le chemin vers pycharm, mais malheureusement cela ne fonctionne pas. J'ai à nouveau invalidé le cache et réindexé le projet, mais les importations QGIS ne fonctionnent pas (la même erreur de chargement de DLL)
TheGrudge

cela pourrait-il être un problème: console PyDev: démarrage. Python 3.7.0 (v3.7.0: 1bf9cc5093, 27 juin 2018, 04:59:51) [MSC v.1914 64 bits (AMD64)] sur win32 sys.platform 'win32' Je viens de voir que la console python semble de penser qu'il fonctionne sur win32
TheGrudge

@ user782457 Voici mon message de démarrage python (le même que le vôtre):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
M. Che

ouais je suppose que Python sous Windows ne vous dit pas l'architecture correcte, il semble y avoir d'autres modules qui peuvent imprimer les informations correctes. Quoi qu'il en soit, j'ai installé QGIS 3.4.6 avec le programme de désinstallation et PyCharm 2019 sur une nouvelle machine, et je ne parviens toujours pas à charger les DLL. Il ne semble donc pas y avoir de problème avec mon installation.
TheGrudge

@TheGrudge Maintenant, je n'ai eu aucun problème avec PyCharm. Réponse mise à jour.
M. Che

1

Cette réponse Stack Overflow indique qu'il existe un problème PyCharm connu (avec Anaconda au moins) dans PyCharm 2019.1 à l'origine du ImportError: DLL load failed: The specified module could not be foundproblème.

Il est destiné à être corrigé dans PyCharm 2019.1.2


Malheureusement, il est toujours présent en 2019.1.3
TheGrudge

1

Edit 1: Semble être uniquement un problème PyCharm 2019.1. En tant que solution temporaire, le script de démarrage fonctionne correctement avec PyCharm 2018.3.6, qui peut être téléchargé à partir de https://www.jetbrains.com/pycharm/download/previous.html

Cette erreur se produit également avec PyCharm Professional 2019.1, mais il est possible d'importer les modules qgis à partir d'un python "normal" qui a été démarré avec le même script de démarrage / les mêmes paramètres environnementaux que ceux décrits ci-dessus:

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

J'ai vérifié ce problème. Fonctionne bien dans PyCharm jusqu'en 2018.3.7, cassé en 2019.1.3. Mes variables d'environnement sont correctement configurées, car je peux accéder aux modules python QGIS via la ligne de commande et les versions antérieures de PyCharm lorsque je les lance avec le même fichier .bat.

Certainement un bug PyCharm. D'autres utilisateurs ont signalé des problèmes similaires .


Je suis de retour à PyCharm 2018.3.7, car je n'ai rien pu faire fonctionner pendant près de 5 mois. Maintenant que l'erreur de chargement de DLL a disparu, je peux réexécuter mes tests et d'autres commandes dans PyCharm. Je ne sais pas ce qu'ils ont changé en 2019.x, mais cela ne me cause que des problèmes.
TheGrudge

1

Cela fonctionne toujours avec PyCharm> = 2019. Vous devrez peut-être simplement changer l'interpréteur Python que vous référencez dans votre projet PyCharm. J'utilise le fichier .bat ci-dessous pour démarrer PyCharm, puis je définis l'interpréteur de projet sur lequel pointer OSGEO4W_ROOT\bin\python-qgis.bat, python3.exedans le même répertoire peut également fonctionner.

@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

En plus de la réponse de Jonny et du commentaire de TheGrudges à ce sujet:

Ce n'est toujours pas corrigé dans PyCharm 2019.2

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.