Pip: Projekt Abhängigkeiten nicht installierbar

Probleme bei der Installation?
Antworten
anoos6502
User
Beiträge: 7
Registriert: Freitag 15. Mai 2020, 07:28

Hallo zusammen,

ich bin momentan dabei folgendes Projekt zum Laufen zu bekommen:
https://link.springer.com/article/10.11 ... 018-0134-8
Hier das repository: https://bitbucket.org/ghentdatascience/dj

Jedesmal, wenn ich die Abhängigkeiten aus der README.md aus dem Respository versuche in genau der Reihenfolge zu installieren kommt es zum superGAU:
llvmlite will sich nicht installieren lassen.

Um es nachvollziehbar zu machen, habe ich das Problem in Ubuntu 16.04 LTS (Live von USB) nachgestellt:

1. Ubuntu starten, einmal komplett updaten
2. Pip for Python2.7 besorgen
3. Alle Abhängigkeiten mit pip install <name>==<version> installieren

Und ab der Abhängigkeit 'librosa' bleibe ich hängen. Dort kann Die Abhängigkeit nicht installiert werden, da DESSEN Abhängigkeit (llvmlite) nicht installierbar ist.
Auch mit direkter pip install konnte ich llvmlite nicht installieren.

Da dieses Problem auch bei einem 'frischen' live Ubuntu auftritt frage ich mich, was ich falsch mache.
Dazu muss man wissen, ich selber habe vorher noch nie ein Python Projekt mit vorheriger Abhängigkeiten-Installation gestartet.

Ich wäre wirklich dankbar für jede Hilfe, ich komme solangsam nicht mehr weiter!
anoos6502
User
Beiträge: 7
Registriert: Freitag 15. Mai 2020, 07:28

Entschuldigung! Hier eine Fehlermeldung dazu, wenn ich llvmlite direkt installieren möchte (nachträglich unter Windows 10 erfasst):

Code: Alles auswählen

ERROR: Command errored out with exit status 1:
   command: 'c:\python27\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'c:\\users\\anoos6502\\appdata\\local\\temp\\pip-install-d3xw4p\\llvmlite\\setup.py'"'"'; __file__='"'"'c:\\users\\anoos6502\\appdata\\local\\temp\\pip-install-d3xw4p\\llvmlite\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'c:\users\anoos6502\appdata\local\temp\pip-wheel-i5ynet'
       cwd: c:\users\anoos6502\appdata\local\temp\pip-install-d3xw4p\llvmlite\
  Complete output (7 lines):
  running bdist_wheel
  c:\python27\python.exe c:\users\anoos6502\appdata\local\temp\pip-install-d3xw4p\llvmlite\ffi\build.py
    File "c:\users\anoos6502\appdata\local\temp\pip-install-d3xw4p\llvmlite\ffi\build.py", line 122
      raise ValueError(msg.format(_ver_check_skip)) from e
                                                       ^
  SyntaxError: invalid syntax
  error: command 'c:\\python27\\python.exe' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for llvmlite
Running setup.py clean for llvmlite
Failed to build llvmlite
Installing collected packages: llvmlite
    Running setup.py install for llvmlite ... error
    ERROR: Command errored out with exit status 1:
     command: 'c:\python27\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'c:\\users\\anoos6502\\appdata\\local\\temp\\pip-install-d3xw4p\\llvmlite\\setup.py'"'"'; __file__='"'"'c:\\users\\anoos6502\\appdata\\local\\temp\\pip-install-d3xw4p\\llvmlite\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'c:\users\anoos6502\appdata\local\temp\pip-record-lznvp3\install-record.txt' --single-version-externally-managed --compile --install-headers 'c:\python27\Include\llvmlite'
         cwd: c:\users\anoos6502\appdata\local\temp\pip-install-d3xw4p\llvmlite\
    Complete output (10 lines):
    running install
    running build
    got version from file c:\users\anoos6502\appdata\local\temp\pip-install-d3xw4p\llvmlite\llvmlite/_version.py {'version': '0.32.1', 'full': 'aa11b129c0b55973067422397821ae6d44fa5e70'}
    running build_ext
    c:\python27\python.exe c:\users\anoos6502\appdata\local\temp\pip-install-d3xw4p\llvmlite\ffi\build.py
      File "c:\users\anoos6502\appdata\local\temp\pip-install-d3xw4p\llvmlite\ffi\build.py", line 122
        raise ValueError(msg.format(_ver_check_skip)) from e
                                                         ^
    SyntaxError: invalid syntax
    error: command 'c:\\python27\\python.exe' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: 'c:\python27\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'c:\\users\\anoos6502\\appdata\\local\\temp\\pip-install-d3xw4p\\llvmlite\\setup.py'"'"'; __file__='"'"'c:\\users\\anoos6502\\appdata\\local\\temp\\pip-install-d3xw4p\\llvmlite\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'c:\users\anoos6502\appdata\local\temp\pip-record-lznvp3\install-record.txt' --single-version-externally-managed --compile --install-headers 'c:\python27\Include\llvmlite' Check the logs for full command output.
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

Du versuchst hier ja auch ein Python3-Paket mit Python2 zu installieren. Warum?
anoos6502
User
Beiträge: 7
Registriert: Freitag 15. Mai 2020, 07:28

Sirius3 hat geschrieben: Freitag 15. Mai 2020, 09:02 Du versuchst hier ja auch ein Python3-Paket mit Python2 zu installieren. Warum?
Danke dir schon einmal für die Antwort. :)

In der README.md des repos steht
...has been developed for python 2.7.12 and tested on Ubuntu 16.04 LTS...
Da die Abhängigkeiten ebenfalls mit Versionen gelistet waren, habe ich diese auch mit der exakten Version zu installieren versucht.
Wie komme ich denn an das richtige Paket, wenn dieses scheinbar das falsche ist?

Auch ist mir nicht ganz klar, wie zu erkennen ist, ob ein Paket für Python3 oder 2.7 ist. Woran hast du das genau erkannt?
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das erkennt man in diesem Fall am Syntaxfehler, weil die angemaekelte Syntax eben Python3 Syntax ist, die Python 2 nicht versteht.

Es ist keine gute Idee, Python 2 Projekte zu starten (oder zu versuchen aufzusetzen). Weil das seit diesem Jahr out-of-support ist. Und eine der Konsequenzen erfaehrst du gerade. Entweder kannst du das ganze mit Python 3 nachempfinden, oder du installierst eine spezifische Version, die aelter ist, und noch python2 unterstuetzt.
anoos6502
User
Beiträge: 7
Registriert: Freitag 15. Mai 2020, 07:28

Ah, ich verstehe. Danke für die Erklärung!
Ich habe durch die Angabe der spezifischen Version versucht auch die richtigen Versionen zu erhalten.
So wie ich das jetzt verstanden habe ist die Kette wie folgt: Librosa benötigt Numba, Numba aber llvmlite.

Damals schien es ja geklappt zu haben, als die App entwickelt wurde.
Bedeutet das also, dass Abhängigkeiten eines Pakets nicht genau in der Version besorgt werden, die benötigt werden, sondern jene, die mindestens diese Version haben?
Das würde zumindest den Fehler erklären.

Ich habe mich kurz schlau gemacht. Mit pipdeptree könnte ich herausfinden, welche Versionen der Abhängigkeiten ich benötige, richtig?
Sobald ich zuhause bin versuche ich damit mal mein Glück. Vorausgesetzt ist, dass die Logik oben auch die ist, die in pip verwendet wird, und immer die aktuellste Version der Abhängigkeiten geladen wird.

/edit:
Im übrigen bin ich eine Niete in Python, weshalb ich den App-Umzug von 2.7 auf 3 nicht gerne als Option nehmen würde. Ursprünglich komme ich aus C# und möchte in erster Linie diese App zum laufen kriegen. Sobald das läuft werde ich das wahrscheinlich als Gelegenheit nehmen um in die Python-Welt einzutauchen. :)
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

"Damals" gab es eben noch keine neuere Version, und die meisten Angaben sind ">= version.x" - womit sich dann etwas neueres "eingefangen" wird.

Was du tun kannst: explizit eine Abhaengigkeit vorher mit `pip install foo==version` installieren, und die ist dann schon vorhanden & befriedigt das requirement des abhaengigen Paketes.
anoos6502
User
Beiträge: 7
Registriert: Freitag 15. Mai 2020, 07:28

__deets__ hat geschrieben: Freitag 15. Mai 2020, 12:48 Was du tun kannst: explizit eine Abhaengigkeit vorher mit `pip install foo==version` installieren, und die ist dann schon vorhanden & befriedigt das requirement des abhaengigen Paketes.
Genau das wäre jetzt mein nächster Gedanke gewesen. Gerade nochmal nachgelesen, dass pipdeptree die Anhängigkeiten und dessen Versionen von bereits installierten Paketen anzeigt.
Wie finde ich die notwendigen Abhängigkeiten-Versionen heraus ohne diese vorher installiert zu haben?
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dazu musst du dir die Pakete anschauen. Fuer numba zb: https://github.com/numba/numba/blob/mas ... ements.txt

Da sieht man allerdings, dass das requirement ziehlich gut eingegrenzt ist.
anoos6502
User
Beiträge: 7
Registriert: Freitag 15. Mai 2020, 07:28

Ja, wenn es eine requirements.txt gibt ist das gut möglich. So werde ich das dann versuchen anzugehen.

Ich würde jetzt z.B. gerne erfahren, welche Version von Numba für Librosa nötig ist, da dadurch auch die llvmlite Version mitbestimmt würde.
Librosa hat aber auf dessen Github keine requirements.txt beigefügt. https://github.com/librosa/librosa

Wie geht man in so einem Fall weiter vor?
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

anoos6502
User
Beiträge: 7
Registriert: Freitag 15. Mai 2020, 07:28

Oh, tut mir leid! Das habe ich wohl übersehen...
Ich versuche es damit, vielen Dank bereits für die Hilfe! :)
Ist übrigens schön zu sehen, dass auch die deutsche Python Community gut aktiv ist - kannte bislang nur die C# Community, wenn auch nur peripher. ;)
krunal1021
User
Beiträge: 1
Registriert: Freitag 5. Juni 2020, 17:27
Kontaktdaten:

First, if you are not sure what is your Python version then my advise would be to either use virtual machine package like venv, or virtualenv package to isolate your project environment. Or upgrade python or pip

https:// appdividend.com/2020/04/22/how-to-upgrade-pip-in-mac-update-pip-on-windows-and-linux

After that restart your pc and try to install any library and you will able to install it.

OR you can install different versions of python as per your project but make sure that they don't overlap with each other.

Moderator: I edited the link out. The post is skimming on being off-topic and a clear attempt at website promotion. Which for a first post and non-active community member I frown upon. So - no backlink at least.
Antworten