• Python “No module named” 以及在Python2中可以导入,但在python3中却出现的原因


    Python “No module named” 以及在Python2中可以导入,但在python3中却出现的原因

    原因之1:

    例如有这样的一个包和它的模块:

    Test

    __init__.py

    Module01.py

    当:

    from Test import Module01

    或者

    import Test.Module01

    出现错误:No module named xxxx 的时候

    如果命名拼写没有错,一般是你的 Test 包或者模块和其它 path 路径下的包或者模块同名了

    可以:

    import Test

    print(Test.__path__)

    查看 Test 所在的路径是否是你所期望的路径

    总结:

    自己在 path 下新建的文件夹或者 .py 模块,名字切记要有明显的区别性

     原因之2:

    本来在 Python2 中运行好好的,但是用 Python3 之后,就出现No module named xxxx。

    参考链接:Relative imports are gone

    一个 .py 作为脚本单独运行,可以在这个 .py 中相对 import 同文件夹的 模块,但是如果这个 .py 作为一个模块在其它的 .py 中导入,那么它里面 相对 import 的模块在 python 3 中就会找不到。

    Relative Imports

    Python 3 makes a distinction between relative and absolute imports, dropping support for implicit relative imports. In Python 2.5+, use from __future__ import absolute_import to get the same behavior as Python 3. To support older versions as well, only use absolute imports. Replace a relative import:

    from xyz import abc

    with an absolute import:

    from mypackage.xyz import abc

    这里说到,关联导入在 Python3 中已经移除,如果想在 Python 2.5+ 的版本中使用该特性,可以

    from __future__ import absolute_import

    原因之3:

    导入不同python主版本编译的 pyd 或者 pyc,例如 python3 导入在 python2  中编译的 pyd 或者 pyc

  • 相关阅读:
    日月
    硕人
    式微
    芣苡
    樛木
    兔罝
    绿衣
    汉广
    小星
    惠子相梁
  • 原文地址:https://www.cnblogs.com/ibingshan/p/9946539.html
Copyright © 2020-2023  润新知