Я получил эту ошибку: «ImportError: не может импортировать имя Python», как я это исправить?
Вопрос
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
Как я это исправить? Если вам нужна какая-либо информация, чтобы узнать, как решить эту проблему, я могу объяснить, просто спросите.
Спасибо
Код:
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()
Код:
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)
Решение
Вам нужно опубликовать свои полные трассировки. Что вы показываете, здесь не все, что полезно. Я закончил копать строку 15 Pyamf / Util /в этом. Код, который вы должны опубликовать
from pyamf import python
Это не должно потерпеть неудачу, если ваша местная среда не будет запущена.
Можете ли вы «импортировать pyamf.util» и «импортировать pyamf.python» в интерактивной скорлупе Python? Как насчет того, чтобы вы начнете Python во время в / TMP (в предположении, что у вас может быть файл с именем 'pyamf.py' в текущем каталоге. Что это плохо.)
= (старый комментарий ниже) =
Исправьте свой вопрос. Я даже не могу сказать, где должна быть строка 15 intil / __ init__.py. Так как я не могу понять это, я не могу ответить на ваш вопрос. Вместо этого я указываю на пути улучшения вашего вопроса и кода.
Во-первых, правильно используйте язык разметки, чтобы весь код был в блоке кода. Убедитесь, что вы под названием «код», поэтому мы знаем, что это от Util / __ init__.py, а не каким-либо случайным файлом.
В вашем сообщении об ошибке включите полный Traceback, а не последние две строки.
Хватит, используя друзей в таких вещах, как «IF (не Service_Func):« И используйте пробел вместо этого, так что его «если не Service_Func». Это обсуждается в Pep 8..
Прочитайте документацию Python и узнайте, как использовать язык. Что-то вроде «func_name = paths [len (paths) - 1] должно быть "func_name = paths [-1]
Узнайте о импорт Функция и не используйте «EXEC» для этого случая. Вам не нужна «Exec Assent_String» - просто сделайте «Self.Addservice (Service_Func, цель)»