Seite 1 von 1

Python Fehler, aber wo

Verfasst: Samstag 16. Juli 2011, 13:24
von Freakli
Guten Tag,

bin totaler Noob in Sachen Python. Ich habe ein Script von https://github.com/brownan/Minecraft-Overviewer/
Dort sind einige Dateien fehlerhaft, zB. die util.py . Die Datei sieht bei mit aktuell so aus:

Code: Alles auswählen

#    This file is part of the Minecraft Overviewer.
#
#    Minecraft Overviewer is free software: you can redistribute it and/or
#    modify it under the terms of the GNU General Public License as published
#    by the Free Software Foundation, either version 3 of the License, or (at
#    your option) any later version.
#
#    Minecraft Overviewer is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
#    Public License for more details.
#
#    You should have received a copy of the GNU General Public License along
#    with the Overviewer.  If not, see <http://www.gnu.org/licenses/>.

"""
Misc utility routines used by multiple files that don't belong anywhere else
"""

import imp
import os
import os.path
import sys
from subprocess import Popen, PIPE

def get_program_path():
    if hasattr(sys, "frozen") or imp.is_frozen("__main__"):
        return os.path.dirname(sys.executable)
    else:
        try:
            # normally, we're in ./overviewer_core/util.py
            # we want ./
            return os.path.dirname(os.path.dirname(__file__))
        except NameError:
            return os.path.dirname(sys.argv[0])


# does not require git, very likely to work everywhere
def findGitHash():
    this_dir = get_program_path()
    if os.path.exists(os.path.join(this_dir,".git")):
        with_ = open(os.path.join(this_dir,".git","HEAD"))
        data_ = with_.read().strip()
        if data_.startswith("ref: "):
            if not os.path.exists(os.path.join(this_dir, ".git", data[5:])):
                return data
            with_ = open(os.path.join(this_dir, ".git", data[5:]))
            return with_.read().strip()
        else:
            return data
    else:
        try:
            import overviewer_version
            return overviewer_version.HASH
        except:
            return "unknown"

def findGitVersion():
    try:
        p = Popen(['git', 'describe', '--tags'], stdout=PIPE, stderr=PIPE)
        p.stderr.close()
        line = p.stdout.readlines()[0]
        if line.startswith('release-'):
            line = line.split('-', 1)[1]
        # turn 0.1.2-50-somehash into 0.1.2-50
        # and 0.1.3 into 0.1.3
        line = '-'.join(line.split('-', 2)[:2])
        return line.strip()
    except:
        try:
            import overviewer_version
            return overviewer_version.VERSION
        except:
            return "unknown"
Die setup.py meldet aber folgendes:

Code: Alles auswählen

# python setup.py build
Traceback (most recent call last):
  File "setup.py", line 120, in <module>
    setup_kwargs['package_data'] = {'overviewer_core': recursive_package_data('data/textures') + recursive_package_data('data/web_assets')}
  File "setup.py", line 83, in recursive_package_data
    current_path = os.path.relpath(dirpath, package_dir)
AttributeError: 'module' object has no attribute 'relpath'
Es sind anscheinend auch noch mehr Dateien betroffen mit dem reserviertem "with" Attribut.

zB.:

Code: Alles auswählen

# python overviewer.py
overviewer.py:69: Warning: 'with' will become a reserved keyword in Python 2.6
  File "overviewer.py", line 69
    with open(os.path.join(this_dir, "overviewer_core", "src", "overviewer.h")) as f:
            ^
SyntaxError: invalid syntax
Was muss ich bei der setup.py ändern, damit dieser Fehler nicht mehr erscheint?

Mit freundlichen Grüßen,
Patrick Werner

Re: Python Fehler, aber wo

Verfasst: Samstag 16. Juli 2011, 13:36
von lunar
@Freakli: Die Dateien sind vollkommen in Ordnung. Du musst einfach nur die richtige Python-Version verwenden.

Re: Python Fehler, aber wo

Verfasst: Samstag 16. Juli 2011, 14:03
von Freakli
Mhh, und welche Version würde ich gebrauchen? Es müsste ja eine vor 2.6 sein oder?

Habe bereits python-dev, python-image & python-numeric installiert. Welche Version Python ist weis ich nicht genau.

Re: Python Fehler, aber wo

Verfasst: Samstag 16. Juli 2011, 14:13
von gkuhl
Aus der README Datei:

Code: Alles auswählen

This program requires:

    Python 2.6 or 2.7 <http://python.org/download/>
    PIL (Python Imaging Library) <http://www.pythonware.com/products/pil/>
    Numpy <http://scipy.org/Download>
    Either the Minecraft client installed, or a terrain.png file. See the Textures section below.
    A C compiler.

Re: Python Fehler, aber wo

Verfasst: Samstag 16. Juli 2011, 14:34
von cofi
Freakli hat geschrieben:Welche Version Python ist weis ich nicht genau.
Dann frag mal `python -V`.

Aller Wahrscheinlichkeit wird es aber Python 2.5 sein.

Re: Python Fehler, aber wo

Verfasst: Samstag 16. Juli 2011, 14:38
von Freakli
Okay, das mit Python 2.6 las ich ja... Nur dachte ich, dass ich diese hätte, habe 2.5. Installiere oder versuche gerade 2.6 zu installieren mit diesem Tutorial / HowTo: http://projectdaenney.org/2009/building ... bian-lenny

//Edit
Okay, der findet den Source nicht, ein anderes Tut, beschreibt einfach zu downloaden und zu compilen, aber leider ist die Python.org Seite offline?
Temporär oder Netzwerk Problem seitens Client?

Re: Python Fehler, aber wo

Verfasst: Samstag 16. Juli 2011, 17:37
von snafu
Klappt es mit dieser Anleitung vielleicht besser?

//edit: Japp, klappt bei mir derzeit auch nicht mit python.org, da musste den Download wohl verschieben.

Re: Python Fehler, aber wo

Verfasst: Samstag 16. Juli 2011, 17:55
von Freakli
Okay, mittlerweile hab ich solange compiled biss es lief ;)

In irgendeiner weise habe ich jetzt die 2.5 & 2.6 ist aber nicht schlimm.
Das Script läuft nun wie gewollt :)

Re: Python Fehler, aber wo

Verfasst: Samstag 16. Juli 2011, 18:00
von snafu
Hauptsache du hast dir dein System nicht zerschossen. Falls das systemweite Python in irgendeiner Form verändert wurde, können diejenigen System-Skripte, die in Python geschrieben sind, unter Umständen Schwierigkeiten bekommen, überhaupt richtig zu laufen.