zoukankan      html  css  js  c++  java
  • 模块导入失败问题

    最近遇见一个Python模块导入自己踩到的坑,搞了好久才整明白,记录一下,也给在同样采坑的小伙伴借鉴一下。

    错误现象很明显,相信大家遇到的报错都一样,但是就是不知道为什么,报错如下:

     导入模块源码如下:

     百思不得其解啊,各种百度和研读女神博客,感觉模块导入这块还是相对容易理解和接受的,为什么就是报错呢。

    这里推荐一下女神写的很详细的一篇博客:

    https://www.cnblogs.com/Eva-J/articles/7292109.html

    好了,进入正题吧,是什么原因导致报这个错呢,上面一行也是一样的方法导入,怎么就没报错。奇怪吧?

    原因就是。。。

    你导入的模块,也导入了你。不能相互导入!!!

    就是server_common模块中已经导入了server_auth模块,你现在又在server_auth模块中再导入server_common,这个样子是不行滴。

    那要怎么解决呢?

    找到具体原因了,事情就好办了,把共用的方法提出来或者都写到一个模块里,然后只导入一个模块就好了。就是这么简单!!

    另外,我有个习惯就是在pycharm里写好的代码要在dose或其他环境执行一下是否可用,避免出现开发环境运行没问题,到了生产环境就运行失败的情况。

    结果就出现了以下报错,pycharm运行ok,在dose窗口运行就报找不到模块的错误。如下图:

    尽管start_server.py文件里已经添加了如下信息:

    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    sys.path.append(BASE_DIR)

    原因是如果只是通过相对路径执行的话,代码里的添加路径信息就没法把正确的路径添加到sys.path里,才导致找不到对应的模块,pycharm是帮你把文件的绝对路径添加上了,所以才没有报错。

  • 相关阅读:
    谈谈SpringFramework与IoC依赖查找
    监控微博、论坛的“棱镜计划”
    输出质数的方法改进
    参数解构
    直接插入排序
    理解迭代
    异常处理
    函数
    continue语句
    break语句
  • 原文地址:https://www.cnblogs.com/hulk-1029/p/11532565.html
Copyright © 2011-2022 走看看