spaCy installieren schlägt fehl

Probleme bei der Installation?
Antworten
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

Hi zusammen,

im Kontext meines Spaßprojekts (Details: viewtopic.php?f=1&t=53315) habe ich ein wenig recherchiert, welche fertigen Python Pakete hilfreich sein könnten.
Dabei bin ich auf spacy gestoßen (https://spacy.io/)

Leider stolpere ich bei der Installation des Pakets.

Hier mal nachfolgend alles was ich bisher probiert habe:

1) Installation über den "Install-Button" in PyCharm:
nach ca. 1h Installation liefert er (reproduzierbar) immer wieder ein riesiges Log mit ca. 7000 Zeilen.
Hier mal ein Auszug

Code: Alles auswählen

C:\ProgramData\Anaconda3\Scripts\conda.exe install -p C:/ProgramData/Anaconda3 spacy -y


UnsatisfiableError: The following specifications were found

Collecting package metadata (current_repodata.json): ...working... done
Solving environment: ...working... failed with initial frozen solve. Retrying with flexible solve.
Solving environment: ...working... failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... failed with initial frozen solve. Retrying with flexible solve.
Solving environment: ...working... 
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
failed


Building graph of deps:   0%|          | 0/310 [00:00<?, ?it/s]
Examining numpy-base:   0%|          | 0/310 [00:00<?, ?it/s]  
Examining mkl_fft:   0%|          | 1/310 [00:01<05:42,  1.11s/it]
Examining mkl_fft:   1%|          | 2/310 [00:01<02:50,  1.81it/s]
Examining pyflakes:   1%|          | 2/310 [00:04<02:50,  1.81it/s]
Examining pyflakes:   1%|          | 3/310 [00:04<06:32,  1.28s/it]

...
Package qtawesome conflicts for:
spyder -> qtawesome[version='>=0.4.1|>=0.5.7|>=1.0.2']
anaconda==2020.11 -> qtawesome==1.0.1=py_0
anaconda==2020.11 -> spyder==4.1.5=py37_0 -> qtawesome[version='>=0.5.7']

Package tifffile conflicts for:
anaconda==2020.11 -> scikit-image==0.17.2=py37h1e1f486_0 -> tifffile[version='>=2019.7.26']
anaconda==2020.11 -> tifffile==2020.10.1[build='py37h8c2d366_2|py38h8c2d366_2']
scikit-image -> tifffile[version='>=2019.7.26']
So wie ich das lese, sind bereits installierte Pakete inkompatibel. Allerdings ist es aufgrund der schieren Masse an Inkompatibilitäten nicht trivial herauszufinden, was denn nun genau die Ursache ist.
Das scheint ein bekanntes Problem zu sein.
https://pyquestions.com/how-to-interpre ... -conflicts

2) Installation über den "Comando-Zeile" in PyCharm:
lt. Doku sollten folgende pip Befehle zum Ziel führen:

Code: Alles auswählen

pip install spacy
Ich erhalte jedoch lediglich folgende Fehlermeldung:

Code: Alles auswählen

Note: you may need to restart the kernel to use updated packages.
Ich möchte anfügen, dass ich auf diese Art und Weise schon öfter Pakete erfolgreich installiert habe (so z. b. auch "wordnet" - ebenfalls ein NLP-Paket, allerdings für Englisch und daher nicht so hilfreich für mein konkretes Thema)
Leider habe ich über goolge nichts hilfreiches gefunden (oder vielleicht auch schlicht nicht verstanden)
Ein Neustart der IDE hat leider auch nicht geholfen.

3) Installation mittels Visual Stuido 2017:
Hier konnte ich das Paket erfolgreich installieren, allerdigns ist Visual Studio 2017 für Python imho nicht wirklich gut geeignet, weil ich dort keine Code Vervollständigung etc. habe.

Jedoch liefert folgender Code ebenfalls eine Fehlermeldung

Code: Alles auswählen

import spacy
import pandas as pd

nlp = spacy.load("de_core_news_sm")
document = nlp("Peter fährt auf seinem Fahrrad und lacht.")
df = pd.DataFrame({"Token": [word.text for word in document],
              "Grundform": [word.lemma_ for word in document],
              "Wortart": [word.pos_ for word in document]})

print(df)
lieferte zunächst folgende Fehlermeldung:

Code: Alles auswählen

[E050] Can't find model 'de_core_news_sm'. It doesn't seem to be a Python package or a valid path to a data directory.


Mit Hilfe der Seite https://stackoverflow.com/questions/564 ... ore-web-lg (und der in VS integrierten PowerShell) konnte ich das Problem lösen und den o.g. Code zum Laufen bringen. Jubel!

So nun zu meinen Fragen:
Wie schaffe ich es, dass es auch in PyCharm läuft? Denn das wäre meine (derzeit) favorisierte IDE.
Hat jemand einen Tipp für mich?
Wie installiert ihr in PyCharm neue Pakete?
Was ist die aus Eurer Sicht ideale Vorgehensweise wenn es um die Installation neuer Pakete geht?

LG
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

Hi zusammen

ich bin immer noch am herumprobieren
Mit der Anleitung hier (https://blog.finxter.com/how-to-install ... ore_web_sm) komme ich ebenfalls wieder auf die ca. 7000 Zeilen Inkompatibilitätsfehlermeldungen. :?

So wie ich das verstehe, kann man sich eine Virtuelle Umgebung "hinterlegen":
https://blog.finxter.com/python-virtual ... tep-guide/

Was mir nicht ganz klar ist, ist folgendes:
kann man sich pro Projekt eine _eigene_ virtuelle Umgebung zurecht legen?

(in Delphi kenne ich "nur" was selbstgeschriebenes, mit dessen Hilfe man sich _pro_ Projekt die Libs in den Versionen, die man jeweils gerade braucht, selbst passend konfigurieren kann, so dass diese entsprechend mit ins Produkt ein kompiliert werden. Ich würde jetzt _vermuten_, dass das mit den virtuellen Umgebungen in Python ähnlich ist. Allerdings ist mir noch unklar, wo man das in PyCharm einstellt. Vielleicht bin ich auch blind und übersehe irgendwas.)

LG / Schöne Weihnachten :)
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Ja, Du kannst Dir pro Projekt ein virtuelles Environment anlegen und solltest davon auch Gebrauch machen. Mit PyCharm hat das wenig zu tun – außer, das PyCharm die von Dir angelegten virtuellen Environments auch finden sollte.

Mit conda klappt das in der Regel, denn IDEs "wissen" zumeist, wo conda die virtuellen Environments ablegt. Diesen Paketmanager würde ich Dir zum Installieren solcher Pakete auch empfehlen (kommt mit Anaconda bzw. Miniconda).

Mit NLP habe ich keinen Umgang, Spacy aber eben testweise in einem eigenen virtuellen Environment installiert. Dauert mit conda auf meinem alten MacBook ca. 2 Minuten.
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

@kbr

vielen lieben Dank. Das hilft mir schon mal, das zu wissen. :)
Ich muss jetzt noch herausfinden, _wie_ man das "pro Projekt" genau einstellt.

So wie ich das anhand eines früheren Tutorials, das ich durchgearbeitet habe, mal gesehen/verstanden habe, habe ich bereits _ein_ virtuelles Environment in PyCharm eingerichtet. Macht ja auch absolut Sinn.

Anaconda/Conda habe ich auch.
Mit NLP habe ich keinen Umgang, Spacy aber eben testweise in einem eigenen virtuellen Environment installiert. Dauert mit conda auf meinem alten MacBook ca. 2 Minuten.
Unter Visual Studio 2017 ging das auch super schnell. Ich vermute, dass es in PyCharm so lange gebraucht hat, weil in diesem Kontext das 7000 Zeilen Log mit Inkompatibilitäten zu erstellt wurde.

Ich hab's nun - Deinem Hinweis sei Dank - mal direkt über den Anaconda Navigator probiert. (So wie es ausschaut hat, hat dieser Weg allerdings auch nicht geklappt. Leider habe ich keine Fehlermeldung erhalten. :-( . Ich habe nur gesehen, dass spacy weiterhin keinen grünen Haken vorne hat, wie die anderen installierten Paketen.)

Ich glaube mein Problem ist, dass mir das Ökosystem in dem ich mich da bewege nicht klar ist. Und das fuchst mich ein bisschen. Ich fühle mich da ein bisschen wie ne Schildkröte, die man auf den Rücken gelegt hat :)
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

Ergänzung:
Ich habe ganze nochmal ausprobiert und muss mich korrigieren:
Anaconda liefert diese Fehlermeldung:

Multiple Errors Encountered.

Wenn man googlet findet man das hier
https://stackoverflow.com/questions/537 ... ncountered

Ich werde das jetzt mal probieren.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Wenn Du bereits Anaconda auf Deinem System hast, dann wechsle in den das Terminal (Linux und Mac), bzw. den Anaconda Prompt unter Windows. Gebe dort ein:

Code: Alles auswählen

$ conda create -n <env_name> python=3.9
wobei <env_name> der Name des neuen Environments ist. Nach Ausführen dieser Zeile aktiviere das Environment mit

Code: Alles auswählen

$ conda activate <env_name>
Dort installierst Du dann spacy:

Code: Alles auswählen

$ conda install spacy
Jetzt verfügst Du über ein Environment, in dem spacy installiert ist. Wenn Du nun ein Projekt beginnst, das spacy benötigt, kannst Du dieses Environment verwenden. Wenn Du ein weiteres Projekt hast, das auch spacy benötigt, aber noch andere Sachen, die womöglich stören, dann lege einfach ein weiteres Environment an und installiere alles Nötige dort.

PyCharm ist nur ein Tool, mit dem Du den Quellcode schreiben kannst. Du kannst ihn auch aus diesem Tool heraus ausführen. Dafür ist es wichtig, das PyCharm die Environments erkennt. Ansonsten kannst Du Deine Programme auch aus dem Terminal starten, ohne Verwendung einer IDE. Ich verwende nur einen Editor und das Terminal. Ist aber sicher Geschmacksache, denn IDEs sind auf ihre Weise auch komfortabel.
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

@kbr

super - vielen lieben Dank für Deine Hilfe!
Mit einem jungfräulichen Environment hat die Installation von spaCy geklappt. :)

BTW
Bin begeistert, dass es in Python die Konfiguration von Environments schon "frei Haus" gibt und man sich das nicht mühsam selbst was zusammenzimmern muss.

Ich verwende nur einen Editor und das Terminal. Ist aber sicher Geschmacksache, denn IDEs sind auf ihre Weise auch komfortabel.
Möglicherweise bin ich da durch Delphi vorbelastet. :)
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

Hallo @kbr

so ich hab's nun zwischenzeitlich geschafft. Hier ganz kurz, wie ich jetzt vorgegangen bin:

Ich habe wie von Dir vorgeschlagen, ein eigenes Environment angelegt: (Man kann dafür alternativ auch die GUI des Anaconda-Navigator nutzen. Das funktioniert auch)
Dort habe ich _nur_ die Pakete installiert, die ich für den obigen Codeschnipsel brauche (spacy, pandas) und dann musste man in PyCharm unter "File --> Settings --> Python Interpreter" per "Add"-Button den entsprechenden Interpreter, der im gewünschten Environment liegt, hinzufügen.
Wo die Environments stehen, steht in einer Datei namens "environments.txt", die bei mir in einem Ordner namens "C:\Users\<name>\.conda" liegt.

Anschließend muss man noch im PyCharm-Terminal mit folgenden Befehlen die Sprachpakete installieren

Code: Alles auswählen

python -m spacy download en
python -m spacy download en_core_web_sm

python -m spacy download de
python -m spacy download de_core_news_sm
Und dann funktioniert alles wie es soll - d. h. Weihnachten ist "gerettet" :) :) vielen herzlich Dank nochmals an @kbr.


Interessehalber:
Ich habe bemerkt, dass es scheinbar verschiedene Arten von Environments gibt (conda, virtuelles Environment, pipenv, poetry)
Wo da jetzt im Einzelnen die Unterschiede liegen, hab ich jetzt allerdings noch nicht verstanden.

In Delphi gehe ich immer so vor, dass pro Projekt nur Libs angezogen werden, die vom Kompilat _wirklich_ gebraucht werden. Ich würde das in Python auch so handhaben.
Ist das auch für Python eine gängige Vorgehensweise?

LG

Edit: Code auch für de-Pakete ergänzt
Buchfink
User
Beiträge: 193
Registriert: Samstag 11. September 2021, 10:16

@kbr
Ja, Du kannst Dir pro Projekt ein virtuelles Environment anlegen und solltest davon auch Gebrauch machen.
sorry - überlesen. Das beantwortet alle offenen Fragen
Antworten