Problem z importem qgis.core podczas pisania samodzielnego skryptu PyQGIS

18

Próbuję napisać samodzielny skrypt Pythona w systemie Windows 7, który używa qgis.core i różnych innych bibliotek qgis.

Znalazłem tutaj stare pytanie na ten temat: Pisanie samodzielnych skryptów Python przy użyciu PyQGIS? i postępował zgodnie ze swoją radą, korzystając z przewodnika tutaj: http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/intro.html#python-applications

Kod sugeruje, że jest:

set PYTHONPATH=c:\qgispath\python

śledzony przez:

set PATH=C:\qgispath;%PATH%

Odkryłem, że IDLE nie podobało się „ustawienie na początku”, więc mój kod wygląda następująco:

PYTHONPATH="C:\OSGeo4W64\apps\qgis\python"
PATH="C:\OSGeo4W64\apps\qgis\python\qgis\core;%PATH%"
import qgis.core

i dostaję:

Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core

Wypróbowałem wszystkie warianty ścieżek, które mogę wymyślić, w tym usunięcie;% PATH% "na końcu (to wygląda na zbyteczne), ale nie byłem w stanie znaleźć więcej informacji. Czy ktoś ma jakieś pomysły, gdzie mógłbym być idzie źle?

EDYTOWAĆ:

Po obejrzeniu komentarza Luigiego Pirelli próbowałem teraz:

>>> PYTHONPATH="C:/OSGEO4~1/apps/qgis/./python\qgis"
>>> import qgis.core

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core
>>> PATH="C:\OSGeo4W64\apps\qgis\python\qgis\core;%PATH%"
>>> import qgis.core

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core
>>> PATH="C:/OSGEO4~1/apps/qgis/./python\qgis\core;%PATH%"
>>> import qgis.core

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core
>>> 
użytkownik24956
źródło
Czy możesz zmodyfikować tytuł swojego pytania w taki sposób, aby określał dokładnie konkretny problem?
SS_Rebelious
ustaw PYTHONPATH jako wartość, którą możesz odczytać, wpisując „qgis” w QGIS Python Console ... jaka jest wartość? W moim przypadku: <moduł 'qgis' z 'C: / OSGEO4 ~ 1 / apps / qgis-dev /./ python \ qgis_ init_ .pyc'> => Muszę dodać do PYTHONPATH ścieżkę: "C: / OSGEO4 ~ 1 / apps / qgis-dev /./ python \ qgis "
Luigi Pirelli
Tytuł zmieniony, dziękuję. Spróbuję tego i ponownie w głównej części pytania
user24956,
1
Nadal nie mam szczęścia, próbowałem wielu kombinacji ŚCIEŻKI i PIETONPATHU, ale bezskutecznie.
user24956

Odpowiedzi:

12

Jeśli zainstalowałeś QGIS za pośrednictwem OSGeo4W, sugeruję, abyś postępował zgodnie z tym tokiem pracy (właśnie przetestowałem go w systemie Windows 7):

  1. Otwórz powłokę OSGeo4W . Start->All programs->OSGeo4W->OSGeo4W Shell.

  2. Ustaw zmienne środowiskowe . Mój preferowany sposób to wykonanie tego pliku nietoperza (zaktualizowanego 2016.11.03: ten plik nietoperza ) z powłoki OSGeo4W. Jak widać, plik ustawia zmienne środowiskowe w następujący sposób:

    set PYTHONPATH=%OSGEO4W_ROOT%\\apps\\qgis\\python
    set PATH=%OSGEO4W_ROOT%\\apps\\qgis\\bin;%PATH%

    Oczywiście musisz sam sprawdzić, czy te ścieżki istnieją w twoim systemie operacyjnym i dostosować je w razie potrzeby.

    Pobierz plik .bat i uruchom go, uzyskując do niego dostęp z powłoki OSGeo4W i naciskając ENTER.

    wprowadź opis zdjęcia tutaj

  3. Zaimportuj biblioteki PyQGIS za pomocą jednej z następujących metod:

    za. Wprowadź interpreter języka Python. Uruchom pythonw powłoce OSGeo4W i ręcznie importuj biblioteki.

    wprowadź opis zdjęcia tutaj

    b. Uruchom skrypt w języku Python. Uruchom python my_pyqgis_script.pyw powłoce OSGeo4W. Zacznę od bardzo prostego .

    wprowadź opis zdjęcia tutaj

Przebieg pracy został opublikowany (po hiszpańsku) kilka lat temu w GeoTux i nadal działa. Jak widać, nie uwzględniam zmiennych środowiskowych w skrypcie Python, ale ustawiam je w powłoce OSGeo4W.

Germán Carrillo
źródło
Cześć! Mam co do tego wątpliwości. Dlaczego var_entorno_osgeo4w.bat? Zrobiłem wszystkie te wiersze, ale w tej części daje mi błąd. Przeczytałem również te foruns pomocy i nadal otrzymuję błąd importu qgis.core (uruchamiany w powłoce osgeo4w).
Bárbara Duarte
Ponieważ to nazwa pliku, który dostarczam, aby ustawić zmienne środowiskowe. Idziesz do folderu, w którym znajduje się ten plik .bat (na obrazach, w których go widzisz C:\dllo) i uruchamiasz plik .bat, pisząc nazwę pliku i naciskając Enter.
Germán Carrillo
Próbowałem użyć powyższego rozwiązania - próbowałem uruchomić plik my_pygis_script.py i uzyskać błąd importu: brak modułu o nazwie qgis.core. Jak mogę to naprawić?
kflaw
Próbowałem również zaimportować qgis.core do pyscripter i otrzymuję kolejny błąd importu: żaden moduł o nazwie sip
kflaw
1
Otrzymuję komunikat „Brak modułu o nazwie qgis.core”, jeśli wypróbuję zaproponowaną tutaj metodę. Jeśli użyję Python.exe w qgis / bin jako interpretera, przy próbie importowania qgis.core pojawia się błąd „brak modułu o nazwie witryna”. Zmarnowałem wiele godzin, próbując używać pyqgis.
Alexander
6

Właśnie zmagałem się z podobnym problemem i zauważyłem plik wsadowy w folderze OSGeo4W \ bin o nazwie python-qgis.bat . Jest to część instalacji QGIS 2.18.15 x64 opartej na pakiecie OSGeo4W na Windows 10.

Po uruchomieniu ten plik wsadowy otwiera interpreter języka Python. import qgispomyślnie działa od wewnątrz.

Ten plik wsadowy zawiera wiersz (jak zauważył Germán Carrillo w swojej oryginalnej odpowiedzi):

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

tuż przed uruchomieniem interpretera Pythona.

Andy Harfoot
źródło
to
usuwa
Wygląda na to, że zaczyna działać, ale generuje błąd „Błąd składni: nieprawidłowa składnia” podczas uruchamiania C: \ OSGEO4 ~ 1 \ apps \ Python37 \ lib \ site.py
Donny V.
Powód, dla którego otrzymałem ten błąd, ponieważ nie uruchomiłem Pythona, którego używa QGIS. Działa teraz!
Donny V.