Ich habe diesen Fehler: „Import: kann nicht importieren Namen Python“ Wie kann ich es beheben?

StackOverflow https://stackoverflow.com/questions/3738110

  •  03-10-2019
  •  | 
  •  

Frage

File "G:\Python25\Lib\site-packages\PyAMF-0.6b2-py2.5-win32.egg\pyamf\util\__init__.py", line 15, in <module>
ImportError: cannot import name python

Wie kann ich es beheben? Wenn Sie irgendwelche Informationen wissen müssen, wie dieses Problem zu beheben, kann ich erklären, einfach fragen.

Danke

Code:

from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import webapp
from TottysGateway import TottysGateway
import logging

def main():
    services_root = 'services'
    #services = ['users.login']

    #gateway = TottysGateway(services, services_root, logger=logging, debug=True)

    #app = webapp.WSGIApplication([('/', gateway)], debug=True)

    #run_wsgi_app(app)

if __name__ == "__main__":
    main()

Code:

from pyamf.remoting.gateway.google import WebAppGateway
import logging


class TottysGateway(WebAppGateway):
    def __init__(self, services_available, root_path, not_found_service, logger, debug):
        # override the contructor and then call the super
        self.services_available = services_available
        self.root_path = root_path
        self.not_found_service = not_found_service
        WebAppGateway.__init__(self, {}, logger=logging, debug=True)

    def getServiceRequest(self, request, target):
        # override the original getServiceRequest method
        try:
            # try looking for the service in the services list
            return WebAppGateway.getServiceRequest(self, request, target)
        except:
            pass

        try:
            # don't know what it does but is an error for now
            service_func = self.router(target)
        except:
            if(target in self.services_available):
                # only if is an available service import it's module
                # so it doesn't access services that should be hidden
                try:
                    module_path = self.root_path + '.' + target
                    paths = target.rsplit('.')
                    func_name = paths[len(paths) - 1]
                    import_as = '_'.join(paths) + '_' + func_name
                    import_string = "from "+module_path+" import "+func_name+' as service_func'
                    exec import_string
                except:
                    service_func = False

        if(not service_func):
            # if is not found load the default not found service
            module_path = self.rootPath + '.' + self.not_found_service
            import_string = "from "+module_path+" import "+func_name+' as service_func'

        # add the service loaded above
        assign_string = "self.addService(service_func, target)"
        exec assign_string

        return WebAppGateway.getServiceRequest(self, request, target)
War es hilfreich?

Lösung

Sie benötigen eine vollständige Rückverfolgung zu veröffentlichen. Was Sie hier zeigen, ist nicht alles, was nützlich. Ich landete ausgrub Linie 15 von pyamf / util / init Py. Der Code, den Sie geschrieben haben sollte, ist

from pyamf import python

Dies sollte nicht fehlschlagen, wenn Sie Ihre lokale Umgebung ist vermasselt.

Können Sie 'Import pyamf.util' und 'Import pyamf.python' in einer interaktiven Python-Shell? Was ist, wenn Sie Python starten, während in / tmp (unter der Annahme, dass Sie eine Datei ‚pyamf.py‘ genannt haben könnten im aktuellen Verzeichnis. Was ist eine schlechte Sache.)

= (älterer Kommentar unten) =

Fix Ihre Frage. Ich kann nicht einmal sagen, wo die Leitung 15 von util / __ init__.py sein soll. Da ich das nicht herausfinden kann, kann ich Ihre Frage nicht beantworten. Stattdessen werde ich Wege weisen darauf hin, Ihre Frage und Code zu verbessern.

Verwenden Sie zuerst die Auszeichnungssprache korrekt, so dass der gesamte Code in einem Codeblock ist. Stellen Sie sicher, haben Sie den Code betitelt, so dass wir es von util / __ init__.py und nicht eine zufällige Datei.

kennen

In der Fehlermeldung, schließen die voll Traceback, und nicht die letzten beiden Zeilen.

Stop Pars in Dingen wie "if (nicht service_func):" und verwendet einen Raum statt, so dass ihre "wenn nicht service_func:". Dies wird diskutiert in PEP 8 .

Lesen Sie die Python-Dokumentation und lernen, wie die Sprache zu verwenden. Etwas wie "func_name = Pfade [len (Pfade) - 1]" sollte "func_name = Pfade [-1]"

Erfahren Sie mehr über die import Funktion und nicht „exec“ für diesen Fall verwenden. Noch müssen Sie die "exec assign_string" brauchen - nur tun, um die "self.addService (service_func, Ziel)"

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top