开发者

Python中导入自定义模块的几种方法总结

目录
  • python导入自定义模块的几种方法
  • Python命令行模式导入自定义类不成功及导入自定义模块报错ImportError
    • 错误1:导入自定义类不成功
    • 错误2:导入自定义模块报错ImportError
  • 总结

    Python导入自定义模块的几种方法

    第一种, 直接 import

    这里有个大前提, 就是你的 py 执行文件和模块同属于同个目录 (父级目录)。

    第二种, 通过 sys 模块导入自定义模块的 path

    import sys
    sys.path.append(r"C:\Users\xx\Desktop\python")
    
    # 如果 append 后面跟的是数组, 则改用 extend
    sys.path.extend([r"path1", r"path2"])

    第三种, 通过 pth 文件找到自定义模块

    把模块放入模块路径下

    使用 print(sys.path) 可以打印模块路径。

    Python命http://www.devze.com令行模式导入自定义类不http://www.devze.com成功及导入自定义模块报错ImportError

    错误1:导入自定义类不成功

    如果当前路径 /root/ 存在Code.py文件,该文件中有函数FunctionA以及类ClassA

    ps: 可以使用下面语句查看当前路径

    >>> import os
    >>> os.getcwd()

    返回

    ‘/root’

    此时命令行输入

    >>> from Code import FunctionA, ClassA

    报错

    ImportError: cannot import name &lsq编程客栈uo;FunctionA’ from ‘Code’ (/root/Code.py)

    出现原因

    首先确定函数名及路径是否正确,确认后发现该路径明明存在对应文件和对应函数,但是仍会报错,原因是函数FunctionA或者类ClassA是在打开命令行窗口之后定义的, 就是在打开命令行之前Code.py中没有FunctionA或者ClassA,打开命令行之后再定义FunctionA或者ClassA即会报错。

    解决办法

    重新打开命令行窗口运行导入模块命令

    错误2:导入自定义模块报错ImportError

    如果当前路径存在Code.py文件,该文件中有函数FunctionA以及类ClassA

    >>> fr编程客栈om .Code import FunctionA, ClassA

    命令行输入上面语句会报错

    ImportError: attempted relative import with no known parent packagjavascripte

    出现原因

    python命令行模式(或者开发者_Python培训自带的IDLE编辑器)默认不存在包-模块层级关系,因此无法识别父类包(但是可以使用相对位置定义文件)

    解决办法

    使用绝对位置导入包

    首先导入os模块,使用os.getcwd()确定当前运行目录(导入方式见错误1)

    确定该路径存在Code.py文件后使用下面绝对路径语句导入

    >>> from Code import FunctionA, ClassA

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜