PyCharm 2019 tidak lagi bekerja dengan QGIS


14

Sejak pembaruan ke PyCharm 2019 saya tidak dapat memuat modul QGIS Python. Saya tidak dapat menggunakan penyelesaian otomatis juga. Saya sudah menghapus cache (dengan membatalkan cache di PyCharm dan juga dengan menghapus folder "sistem" di direktori pengaturan pengguna), sepertinya tidak ada yang berhasil.

Saat memulai konsol Python di dalam PyCharm dan mengetik "import qgis.core", saya mendapatkan kesalahan berikut:

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.

Sesuatu sepertinya rusak, di PyCharm 2018.3 semuanya baik-baik saja. Lingkungan sys.path dan pengaturan juru bahasa tampaknya benar:

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

Adakah yang memperbarui PyCharm ke 2019 dan dapat mengkonfirmasi ini? Saya juga menginstal ulang seluruh instalasi QGIS, tetapi sepertinya tidak ada yang berhasil.

Sepertinya DLL yang berisi stub tidak kompatibel sekarang?

Kelelawar saya untuk memulai PyCharm terlihat seperti ini:

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

Tunjukkan *.batfile Anda yang Anda gunakan untuk menjalankan PyCharm, kompatibel dengan QGIS.
Tuan Che

C:\Program Files\JetBrains\PyCharm Community Edition 2018.2.2\bin\pycharm64.exemenunjuk ke PyCharm 2019 baru Anda?
Tn. Che

ya itu .. PyCharm mulai, tetapi tampaknya tidak dapat memuat DLL
qgis

Saya mencoba mengatur PYTHONHOME di C: \ OSGeo4W64 \ etc \ ini \ python-core.bat ke C: \ OSGeo4W64 \ apps \ Python37 juga, tetapi sepertinya tidak ada yang berhasil.
TheGrudge

Saya dulu punya masalah dengan DLL, tetapi dengan asyncioperpustakaan tambahan . Saya menemukan bahwa saya menginstal perpustakaan identik ganda di direktori root C:\OSGeo4W64\libdan lib direktori samping C:\OSGeo4W64\apps\Python37\lib. Setelah menghapus instalasi lib sisi (menggunakan PyCharm), masalahnya teratasi. Tetapi masalah Anda tidak identik.
Tn. Che

Jawaban:


2

Diperbarui

Saya menginstal ulang Windows 10(menghapus instalasi), QGIS 3.10(menghapus instalasi OSGeo4W), PyCharm 2019.3.1 ( Community Edition Build #PC-193.5662.61, built on December 18, 2019) dan saya mengkonfirmasi bahwa saya tidak memiliki kesalahan saat menjalankan from qgis._core import *dengan PyCharm diluncurkan dengan *.batfile seperti :

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

Saya mengambil file bat Anda dan hanya mengubah path ke pycharm, tetapi sayangnya itu tidak berfungsi. Saya membatalkan cache lagi dan mengindeks ulang proyek, tetapi impor QGIS tidak berfungsi (kesalahan memuat DLL yang sama)
TheGrudge

mungkin ini menjadi masalah: Konsol PyDev: mulai. Python 3.7.0 (v3.7.0: 1bf9cc5093, 27 Juni 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] di win32 sys.platform 'win32' Saya baru saja melihat bahwa konsol python tampaknya untuk berpikir itu berjalan pada win32
TheGrudge

@ user782457 Ini adalah pesan startup python saya (sama seperti milik Anda):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
Tn. Che

ya saya kira Python di Windows tidak memberi tahu Anda arsitektur yang benar, tampaknya ada modul lain yang dapat mencetak informasi yang benar. Lagi pula saya menginstal QGIS 3.4.6 dengan netinstaller dan PyCharm 2019 pada mesin baru, dan saya masih tidak dapat memuat DLL. Jadi sepertinya tidak ada masalah dengan instalasi saya.
TheGrudge

@TheGrudge Sekarang saya tidak punya masalah dengan PyCharm. Jawaban diperbarui.
Tn. Che


1

Sunting 1: Tampaknya hanya masalah PyCharm 2019.1. Sebagai solusi sementara, skrip awal berfungsi dengan baik dengan PyCharm 2018.3.6, yang dapat diunduh dari https://www.jetbrains.com/pycharm/download/previous.html

Kesalahan ini juga terjadi pada PyCharm Professional 2019.1, tetapi dimungkinkan untuk mengimpor modul qgis dari python "normal" yang dimulai dengan skrip startup / pengaturan lingkungan yang sama seperti yang dijelaskan di atas:

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

Saya telah memverifikasi masalah ini. Bekerja dengan baik di PyCharm hingga 2018.3.7, rusak di 2019.1.3. Variabel lingkungan saya diatur dengan benar, karena saya dapat mengakses modul python QGIS melalui baris perintah dan versi PyCharm yang lebih lama ketika meluncurkannya dengan file .bat yang sama.

Jelas merupakan bug PyCharm. Pengguna lain telah melaporkan masalah serupa .


Saya kembali ke PyCharm 2018.3.7, karena saya tidak bisa mendapatkan apa pun yang berfungsi selama hampir 5 bulan. Sekarang kesalahan pemuatan DLL hilang, saya bisa menjalankan unittests dan perintah lain di PyCharm lagi. Saya tidak tahu apa yang telah mereka ubah pada 2019.x, tetapi itu tidak menyebabkan masalah bagi saya.
TheGrudge

1

Ini masih berfungsi dengan PyCharm> = 2019. Anda mungkin hanya perlu mengubah juru bahasa Python yang Anda referensi dalam proyek PyCharm Anda. Saya menggunakan file .bat di bawah ini untuk memulai PyCharm kemudian mengatur interpreter proyek untuk menunjuk ke OSGEO4W_ROOT\bin\python-qgis.bat, python3.exedalam direktori yang sama juga dapat bekerja.

@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

Selain jawaban Jonny dan komentar TheGrudges untuk itu:

Itu masih belum diperbaiki di PyCharm 2019.2

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.