ubuntuusers.de

Problem mit Python beim Installieren von "The Raven - Legacy of a master thief"

Status: Gelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

Andreus_Viktualius

Anmeldungsdatum:
26. Februar 2012

Beiträge: 22

Wohnort: NÖ, Österreich

Hallo Zusammen!

Ich habe folgendes Problem beim Installieren des Spiels "The Raven ....":

-das install-script macht eigentlich nichts, ausser in den ordner pkg zu wechseln und per sudo darin ein weiteres script auszuführen

-dieses eigentliche installscript beginnt mit #!/usr/bin/env python3 (ich vermute mal, er würde hier meckern, falls ich python3 nicht installiert hätte bzw. nicht findet...(?)) und gibt sofort die fehlermeldung aus:

1
2
3
4
5
6

Installing necessary dependencies for The Raven:
Traceback (most recent call last):
  File "./the_raven_install", line 4, in <module>
    from apt.debfile import DebPackage
ImportError: No module named 'apt'

Ich habe bereits versucht python-apt zu installieren und da es schon da war zu reinstallieren, was aber nichts ändert.

Könnt ihr mir weiterhelfen?

Vielen Dank!

diesch Team-Icon

Avatar von diesch

Anmeldungsdatum:
18. Februar 2009

Beiträge: 5072

Wohnort: Brandenburg an der Havel

Da das Programm Python3 benutzt, brauchst du python3-apt.

Andreus_Viktualius

(Themenstarter)

Anmeldungsdatum:
26. Februar 2012

Beiträge: 22

Wohnort: NÖ, Österreich

hmm... erstmal Vielen Dank für die schnelle Antwort! Ich habs nachinstalliert, der Fehler bleibt aber gleich... muss ich die module irgendwie neu einlesen/aktualisieren?

diesch Team-Icon

Avatar von diesch

Anmeldungsdatum:
18. Februar 2009

Beiträge: 5072

Wohnort: Brandenburg an der Havel

Nein, das s9ollte so funktionieren.

Was sagen die drei Befehle

1
2
3
which python3
python3 -c 'import apt; print(apt)'
python3 -c 'import sys; print("\n".join(sys.path))'

Andreus_Viktualius

(Themenstarter)

Anmeldungsdatum:
26. Februar 2012

Beiträge: 22

Wohnort: NÖ, Österreich

1:

1
/usr/local/bin/python3

2:

1
2
3
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named 'apt'

3:

1
2
3
4
5
6
/usr/local/lib/python33.zip
/usr/local/lib/python3.3
/usr/local/lib/python3.3/plat-linux
/usr/local/lib/python3.3/lib-dynload
/home/andi/.local/lib/python3.3/site-packages
/usr/local/lib/python3.3/site-packages

diesch Team-Icon

Avatar von diesch

Anmeldungsdatum:
18. Februar 2009

Beiträge: 5072

Wohnort: Brandenburg an der Havel

Du hast dir Python3 von Hand nach /usr/local/ installiert, und das benutzt die über die Paketverwaltung installierten Module nicht.

Ändere in dem Skript

1
#!/usr/bin/env python3

in

1
#!/usr/bin/python3

damit das über die Paketverwaltung installierte Python3 verwendet wird.

Andreus_Viktualius

(Themenstarter)

Anmeldungsdatum:
26. Februar 2012

Beiträge: 22

Wohnort: NÖ, Österreich

Okay... hab ich gemacht. Danke! Das hat das Problem in diesem Script gelöst und auch in einem weiteren das später aufgerufen wird. Nun habe ich aber das Problem, dass beim Start über das Menü anscheinend ständig ein neues Script erzeugt wird und dann ausgeführt. Das selbe Problem also, aber wenn ichs ändere, wirds beim nächsten Versuch wieder überschrieben und sofort ausgeführt. Ich habe aber bemerkt dass ich nun direkt über einen der Launcher im Spieleordner starten kann (mit Updater und allem...).

Was bedeutet denn das "env " ? Da ich das selbst installierte Python3 nicht mehr brauche: gibts einen einfachen Weg, das wieder so zu entfernen oder einzustellen, dass "env Python3" wieder das "original Ubuntu-Python3" verwendet?

Kelhim

Avatar von Kelhim

Anmeldungsdatum:
18. September 2006

Beiträge: 3642

Wohnort: Köln

Wenn du Python im heruntergeladenen Python-Verzeichnis mit sudo make install installiert hast, kannst du es (im gleichen Verzeichnis) auch mit sudo make uninstall wieder deinstallieren - nie probiert, aber ich gehe mal schwer davon aus.

Zur ersten Zeile von Skripten:

#!/usr/bin/python3

Damit wird nur und ausschließlich das in /usr/bin installierte Python 3 benutzt. Wenn du aber der Autor des Skripts wärst und sicherstellen wolltest, dass es funktioniert, egal, wo Python 3 installiert ist, könntest du env verwenden:

#!/usr/bin/env python3

Damit wird das Python 3 benutzt, das zuerst im PATH gefunden wird. In deinem Fall würde das manuell installierte Python 3 in /usr/local/bin bevorzugt.

Wenn du also das manuell installierte Python wieder deinstallierst, spielt es für dich keine Rolle, mit welcher der beiden Zeilen das Skript beginnt, weil in jedem Fall das mit der Paketverwaltung installierte Python benutzt würde. Wenn du es aber nicht deinstallierst, musst die Zeile ohne env nehmen, weil das manuell installierte Python 3 nicht die vom Skript benötigten Module hat oder du sie aufwändig nachinstallieren müsstest.

diesch Team-Icon

Avatar von diesch

Anmeldungsdatum:
18. Februar 2009

Beiträge: 5072

Wohnort: Brandenburg an der Havel

/usr/bin/python3 ist vermutlich ein Symlink auf /usr/bin/python3.3. Du kannst also /usr/bin/python3 einfach löschen. DAs selbstinstallierte Python ist dann weiter als python3.3 nutzbar, aber python3 ist das von Ubuntu.

Andreus_Viktualius

(Themenstarter)

Anmeldungsdatum:
26. Februar 2012

Beiträge: 22

Wohnort: NÖ, Österreich

Danke Euch beiden! Hab wieder was gelernt und inzwischen klappt alles reibungslos.

@diesch: du meinst /usr/local/bin/python3 ist ein Link auf /usr/local/bin/python3.3 und kann gelöscht werden, oder? Hab erstmal mit ls bei /usr/bin/python3 nachgesehen und da es so war (also auf python3.2, aber egal), den link gelöscht. Dann hat das Terminal aber über fehlenden Interpreter gemeckert... (im Nachhinein verständlich ^^...) Seit dem Löschen vom link /usr/local/bin/python3 funktionieren jetzt aber alle scripts und Menüeinträge.

DANKE!

Antworten |