zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    iview日期控件获取的数据的转换
    使用vue+iview Form组件 按enter键阻止页面刷新
    vue组件的创建和使用(小功能)
    vue获取本地图片展示到页面上方法
    jQuery ajax
    copy网站小工具
    echarts柱状图颜色设置:echarts柱状图如何设置不同颜色?(代码)
    mysql数据库my.ini配置文件中文详解
    mysql创建流水号
    博客园加入网易云音乐
  • 原文地址:https://www.cnblogs.com/ibingshan/p/9946539.html
Copyright © 2011-2022 走看看