howbowlcn 2019-07-19 14:33 采纳率: 0%
浏览 3866

报错:the imp module is deprecated in favour of importlib

D:\python\lib\site-packages\win32\lib\pywintypes.py:2: DeprecationWarning:the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses

因为python 3.4之后 imp 被弃用 ,因此弹出错误提示,看了很多大神的答案,但还是不知道应该如何修改pywintypes.py?该文件源码如下,请大神帮看看

import imp, sys, os

def import_pywin32_system_module(modname, globs):

if not sys.platform.startswith("win32"):

    for ext, mode, ext_type in imp.get_suffixes():
        if ext_type==imp.C_EXTENSION:
            for path in sys.path:
                look = os.path.join(path, "lib" + modname + ext)
                if os.path.isfile(look):
                    mod = imp.load_module(modname, None, look,
                                          (ext, mode, ext_type))


                    globs.update(mod.__dict__)
                    return
    raise ImportError("No dynamic module " + modname)

for suffix_item in imp.get_suffixes():
    if suffix_item[0]=='_d.pyd':
        suffix = '_d'
        break
else:
    suffix = ""
filename = "%s%d%d%s.dll" % \
           (modname, sys.version_info[0], sys.version_info[1], suffix)
if hasattr(sys, "frozen"):

    for look in sys.path:

        if os.path.isfile(look):
            look = os.path.dirname(look)            
        found = os.path.join(look, filename)
        if os.path.isfile(found):
            break
    else:
        raise ImportError("Module '%s' isn't in frozen sys.path %s" % (modname, sys.path))
else:

    import _win32sysloader
    found = _win32sysloader.GetModuleFilename(filename)
    if found is None:

        found = _win32sysloader.LoadModule(filename)
    if found is None:

        if os.path.isfile(os.path.join(sys.prefix, filename)):
            found = os.path.join(sys.prefix, filename)
    if found is None:

        if os.path.isfile(os.path.join(os.path.dirname(__file__), filename)):
            found = os.path.join(os.path.dirname(__file__), filename)
    if found is None:

        import distutils.sysconfig
        maybe = os.path.join(distutils.sysconfig.get_python_lib(plat_specific=1),
                             "pywin32_system32", filename)
        if os.path.isfile(maybe):
            found = maybe
    if found is None:

        raise ImportError("No system module '%s' (%s)" % (modname, filename))

old_mod = sys.modules[modname]

mod = imp.load_dynamic(modname, found)

if sys.version_info < (3,0):
    assert sys.modules[modname] is old_mod
    assert mod is old_mod
else:
    assert sys.modules[modname] is not old_mod
    assert sys.modules[modname] is mod

    sys.modules[modname] = old_mod
    globs.update(mod.__dict__)

import_pywin32_system_module("pywintypes", globals())

  • 写回答

5条回答 默认 最新

  • m0_46458873 2021-03-11 13:08
    关注

    请问问题解决了吗,我也找不到这个文件的修改方法

    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站