python的相对路径导入问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的相对路径导入问题相关的知识,希望对你有一定的参考价值。

用python做项目,如果项目大了,或者想更好的管理程序,总是要使用包。包解决了命名冲突的问题。

今天在使用python的相对路径导入的时候,遇到了不少的问题。

包导入情形:

src/
    __init__.py
    main.py
    components/
        __init__.py
        expander.py
        language_id.py
    utilities/
        __init__.py
        functions.py

如果要在expander.py中引用functions.py中的内容,或许这样表示

from ..utilities import functions.py

 

1.错误一:ValueError:Attemptedrelative import beyond toplevel package

这个问题是因为到达了包的最顶层,而最顶层不是一个包。

解决方法:在main.py同级添加一个目录mod,包含components和utilities,并在mod中添加一个__init__.py,即可解决

参见:http://stackoverflow.com/questions/4175534/relative-imports-in-python

 

2.错误二:ValueError: Attempted relative import in non-package

使用相对路径进行导入的文件,不能再当作主文件执行。原因如下:

http://blog.csdn.net/chinaren0001/article/details/7338041

 

3.错误三:no module named ***

在指定路径下没有找到该模块。

以上是关于python的相对路径导入问题的主要内容,如果未能解决你的问题,请参考以下文章

Python 导入相对路径

Python 包内的导入问题(绝对导入和相对导入)

python3绝对路径,相对路径

在Python中以绝对路径或者相对路径导入文件(或模块)的方法

详解Python中的相对导入和绝对导入

从相对路径导入模块