我收到此错误:“ImportError:无法导入名称 python”我该如何修复它?

发布于 2024-09-24 13:12:41 字数 2748 浏览 1 评论 0原文

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)
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

How do I fix it?
If you need any info to know how to fix this problem, I can explain, just ask.

Thanks

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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

握住你手 2024-10-01 13:12:41

您需要发布完整的回溯。您在这里显示的内容并不是那么有用。我最终挖掘出了 pyamf/util/init.py 的第 15 行。您应该发布的代码是

from pyamf import python

除非您的本地环境混乱,否则这应该不会失败。

您可以在交互式 Python shell 中“导入 pyamf.util”和“导入 pyamf.python”吗?如果您在 /tmp 中启动 Python 会怎么样(假设您在当前目录中可能有一个名为“pyamf.py”的文件。这是一件坏事。)

=(下面的旧评论)=

解决您的问题。我什至不知道 util/__init__.py 的第 15 行应该在哪里。因为我不明白,所以无法回答你的问题。相反,我将指出改进您的问题和代码的方法。

首先,正确使用标记语言,使所有代码都在一个代码块中。确保您已为代码命名,以便我们知道它来自 util/__init__.py 而不是某个随机文件。

在错误消息中,包含完整回溯,而不是最后两行。

在“if(not service_func):”等内容中停止使用括号,并使用空格代替,因此它是“if not service_func:”。 PEP 8 对此进行了讨论。

阅读 Python 文档并了解如何使用该语言。像“func_name = paths[len(paths) - 1]”这样的东西应该是“func_name = paths[-1]”

了解导入 函数,并且在这种情况下不要使用“exec”。你也不需要“exec allocate_string”——只需执行“self.addService(service_func, target)”

You need to post your full traceback. What you show here isn't all that useful. I ended up digging up line 15 of pyamf/util/init.py. The code you should have posted is

from pyamf import python

This should not fail unless your local environment is messed up.

Can you 'import pyamf.util' and 'import pyamf.python' in a interactive Python shell? What about if you start Python while in /tmp (on the assumption that you might have a file named 'pyamf.py' in the current directory. Which is a bad thing.)

= (older comment below) =

Fix your question. I can't even tell where line 15 of util/__init__.py is supposed to be. Since I can't figure that out, I can't answer your question. Instead, I'll point out ways to improve your question and code.

First, use the markup language correctly, so that all the code is in a code block. Make sure you've titled the code, so we know it's from util/__init__.py and not some random file.

In your error message, include the full traceback, and not the last two lines.

Stop using parens in things like "if(not service_func):" and use a space instead, so its " if not service_func:". This is discussed in PEP 8.

Read the Python documentation and learn how to use the language. Something like "func_name = paths[len(paths) - 1]" should be "func_name = paths[-1]"

Learn about the import function and don't use "exec" for this case. Nor do you need the "exec assign_string" -- just do the "self.addService(service_func, target)"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文