zoukankan      html  css  js  c++  java
  • Python 2.7出现但Python 3.5不出现“ImportError: No module named xxx”的解决方案

    问题描述:

    本人写了一个Python测试程序,里面调用了自己写的另外一个packageautodriving.sumo_env,如下所示:

    from autodriving.sumo_env import SumoEnv

    测试程序与packageautodriving.sumo_env位于相同的目录。使用Python 3.5环境能正常运行,使用Python 2.7环境运行报出如下错误:

    Traceback (most recent call last):
      File "autodriving/ego_runner.py", line 35, in <module>
        from autodriving.sumo_env import SumoEnv
    ImportError: No module named autodriving.sumo_env

    问题分析:

    根据该错误信息,上网找到一些解决方案,基本与《ImportError: No module named 通用解决方法》类似,我一看就知道根本没找到问题症结,是误人子弟的解决方案。于是继续上网查找Python package的原理,终于找到了如靠谱答案(见该网页):

    Python 3.3之前,需要在每个目录中添加一个空白的__init__.py文件作为package的标识,如果没有该文件,该目录就不会认为是package。当然,__init__.py文件中还可以填写一些额外的内容,但与本文问题无关,此处按下不表。但在Python 3.3之后,就不再需要该文件了,原文描述如下(见该网页):

    PEP 420: Implicit Namespace Packages
    Native support for package directories that don’t require __init__.py marker files and can
    automatically span multiple path segments (inspired by various third party approaches to
    namespace packages, as described in PEP 420)

    解决方案:

    考虑到Python 2.7使用范围挺广,在定义package时,每个目录中添加一个空白的__init__.py文件作为package的标识,问题得到解决。

    转载自:https://blog.csdn.net/davidhopper/article/details/81979769

  • 相关阅读:
    提前期分类
    物料属性,MRP/MPS属性
    ASP.NET刷新页面的一些方法
    Nothing 和 Is
    三层架构与MVC
    ADO.NET
    软件工程之数据流程图(DFD Data Flow Diagram)
    VB.NET小结
    推荐开发人员看的具有影响力的书籍
    C++考试
  • 原文地址:https://www.cnblogs.com/yddzyy/p/13511916.html
Copyright © 2011-2022 走看看