美文网首页要吃饭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