美文网首页要吃饭Python 3.x
关于Python2、Python3相对路径、绝对路径导入的记录

关于Python2、Python3相对路径、绝对路径导入的记录

作者: wuya | 来源:发表于2015-03-17 10:48 被阅读7875次

    两个版本的差异

    1. python2缺省为相对路径导入,python3缺省为绝对路径导入
    2. python2绝对路径导入
    from __future__ import absolute_import
    
    1. 如果需要保持python2与python3皆可用,避免出现
    try:
        from pets.cat import xxx
    except:
        from cat import xxx
    

    则需要使用相对路径导入,即

    from .cat import xxx
    
    1. python2缺省会搜索上一级目录、上上级目录

    其他重点

    1. 包之所以为包,取决于是否有__init__.py文件
    2. 相对路径导入仅用于包内,同一个顶级包内
    3. 当前目录:

    play$ python main.py
    play为当前目录

    play$ python test/main.py
    play/test为当前目录

    play$ python -m test.main
    play为当前目录

    1. 出现SystemError: Parent module '' not loaded, cannot perform relative import错误一个原因为包内使用相对路径,改用python -m可解决

    相关文章

      网友评论

      • eb0220c4c1b1:```
        play$ python test/main.py
        play/test为当前目录

        play$ python -m test.main
        play为当前目录
        ```
        我用os.getwcd()函数查看当前目录,结果这两个命令运行的结果的路径是一样的,请问这里的“当前路径”指的是什么?谢谢

      本文标题:关于Python2、Python3相对路径、绝对路径导入的记录

      本文链接:https://www.haomeiwen.com/subject/pcdlxttx.html