无法在Python 2.7.9虚拟环境中导入_winreg

发布于 2021-01-29 17:26:25

我正在Windows 7 64bit,python 2.7.9 x64的虚拟环境中运行App Engine应用程序。

这是堆栈跟踪:

    p_system = platform.system()
  File "C:\Python27\lib\platform.py", line 1310, in system
    return uname()[0]
  File "C:\Python27\lib\platform.py", line 1206, in uname
    release,version,csd,ptype = win32_ver()
  File "C:\Python27\lib\platform.py", line 597, in win32_ver
    import _winreg
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\python\sandbox.py", line 945, in load_module
    raise ImportError('No module named %s' % fullname)
  ImportError: No module named _winreg

但是,它在cli(在venv之外)中也可以正常工作:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Admin>python
Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import _winreg
>>> import platform
>>> platform.system()
'Windows'
>>>

为什么会这样?我该怎么做才能解决此问题?

关注者
0
被浏览
146
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    _winreg正如文档所说,模块的存在是为了“将Windows注册表API暴露给Python”。

    App Engine不提供“ Windows注册表API”(也不提供任何其他Windows特定的API)。因此,它的 沙箱会
    阻止import对模块的尝试-请注意,在堆栈跟踪的末尾,故意在sandbox.pyApp Engine SDK的模块中引发了异常。

    Python的“虚拟环境”在这里不起作用-全部与App Engine有关。

    请说明_winreg一旦部署GAE应用程序,您将尝试完成的任务-假设已将其部署到Linux服务器(尽管GAE运行时也不提供Linux特定的API
    :-),因此没有Windows Registry API在附近的任何地方…



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看