PyCharm 2019 non funziona più con QGIS


14

Dall'aggiornamento a PyCharm 2019 non riesco a caricare i moduli QGIS Python. Neanche io posso usare il completamento automatico. Ho già eliminato la cache (invalidando la cache in PyCharm e anche cancellando la cartella "sistema" nella directory delle impostazioni dell'utente), nulla sembra funzionare.

Quando si avvia la console Python all'interno di PyCharm e si digita "import qgis.core", viene visualizzato il seguente errore:

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.

Qualcosa sembra essere rotto, in PyCharm 2018.3 tutto era ok. Gli ambienti sys.path e le impostazioni dell'interprete sembrano essere corretti:

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

Qualcuno ha aggiornato PyCharm al 2019 e può confermarlo? Ho anche reinstallato l'intera installazione di QGIS, ma nulla sembra funzionare.

Sembra che le DLL che contengono gli stub siano incompatibili ora?

La mia mazza per iniziare PyCharm è simile a questa:

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

Mostrami il tuo *.batfile che usi per eseguire PyCharm, compatibile con QGIS.
Mr. Che

C:\Program Files\JetBrains\PyCharm Community Edition 2018.2.2\bin\pycharm64.exepunti al tuo nuovo PyCharm 2019?
Mr. Che

sì, lo fa .. PyCharm si sta avviando, ma sembra non riuscire a caricare le DLL qgis
TheGrudge

Ho provato a impostare PYTHONHOME in C: \ OSGeo4W64 \ etc \ ini \ python-core.bat su C: \ OSGeo4W64 \ apps \ Python37, ma nulla sembra funzionare.
TheGrudge

Avevo problemi di questo tipo con le DLL, ma con asynciolibrerie aggiuntive . Ho scoperto che ho installato librerie doppie identiche nella directory principale C:\OSGeo4W64\libe nella libreria laterale lib C:\OSGeo4W64\apps\Python37\lib. Dopo aver rimosso l'installazione della libreria laterale (usando PyCharm), il problema è stato risolto. Ma il tuo problema non è identico.
Mr. Che

Risposte:


2

aggiornato

Ho reinstallato Windows 10(cancella l'installazione), QGIS 3.10(cancella l'installazione OSGeo4W), PyCharm 2019.3.1 ( Community Edition Build #PC-193.5662.61, built on December 18, 2019) e confermo che non ho errori durante l'esecuzione from qgis._core import *con PyCharm avviato con tale *.batfile:

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

Ho preso il tuo file bat e ho solo cambiato il percorso in pycharm, ma sfortunatamente non funziona. Ho invalidato nuovamente la cache e reindicizzato il progetto, ma le importazioni di QGIS non funzionano (lo stesso errore di caricamento della DLL)
TheGrudge

potrebbe essere un problema: console PyDev: avvio. Python 3.7.0 (v3.7.0: 1bf9cc5093, 27 giu 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] su win32 sys.platform 'win32' Ho appena visto che la console Python sembra pensare che funziona su win32
TheGrudge

@ user782457 Ecco il mio messaggio di avvio di Python (uguale al tuo):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

Sì, suppongo che Python in Windows non ti dica l'architettura corretta, sembra che ci siano altri moduli in grado di stampare le informazioni corrette. Comunque ho installato QGIS 3.4.6 con netinstaller e PyCharm 2019 su una nuova macchina e non riesco ancora a caricare le DLL. Quindi non sembra essere un problema con la mia installazione.
TheGrudge,

@TheGrudge Ora non ho avuto problemi con PyCharm. Risposta aggiornata
Mr. Che


1

Modifica 1: sembra essere solo un problema di PyCharm 2019.1. Come soluzione temporanea lo script di avvio funziona perfettamente con PyCharm 2018.3.6, che può essere scaricato da https://www.jetbrains.com/pycharm/download/previous.html

Questo errore si verifica anche con PyCharm Professional 2019.1, ma è possibile importare i moduli qgis da un pitone "normale" avviato con le stesse impostazioni di avvio / impostazioni ambientali descritte sopra:

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

Ho verificato questo problema. Funziona bene in PyCharm fino al 2018.3.7, rotto nel 2019.1.3. Le variabili di ambiente sono impostate correttamente, poiché posso accedere ai moduli Python di QGIS tramite la riga di comando e le versioni precedenti di PyCharm quando li avvio con lo stesso file .bat.

Sicuramente un bug di PyCharm. Altri utenti hanno segnalato problemi simili .


Sono tornato a PyCharm 2018.3.7, poiché non sono riuscito a far funzionare nulla per quasi 5 mesi. Ora l'errore di caricamento della DLL è scomparso, posso eseguire nuovamente i miei unittest e altri comandi in PyCharm. Non so cosa siano cambiati in 2019.x, ma non causa altro che problemi per me.
TheGrudge,

1

Funziona ancora con PyCharm> = 2019. Potrebbe essere necessario cambiare l'interprete Python a cui fai riferimento nel tuo progetto PyCharm. Uso il file .bat di seguito per avviare PyCharm e quindi impostare l'interprete del progetto su cui puntare OSGEO4W_ROOT\bin\python-qgis.bat, python3.exenella stessa directory può funzionare anche.

@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

Oltre alla risposta di Jonny e al commento di TheGrudges:

Non è ancora stato risolto in PyCharm 2019.2

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.