代码改变世界

python的相对路径导入问题

  youxin  阅读(10250)  评论(0编辑  收藏  举报

用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 ***

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

 

另外:在main.py执行的时候,没有指定路径的文件默认与main.py是同一路径。

转自:http://hi.baidu.com/fleago/item/06b5c95765b17e12aaf6d79b

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2013-05-20 zend framework和smarty的区别
2013-05-20 什么是分层架构模式及常见的分层架构模式
2013-05-20 三层架构理解
2012-05-20 回溯法解八后问题
2012-05-20 回溯法简介
2012-05-20 c++ find_first_of
2012-05-20 masmplus增加调试工具
点击右上角即可分享
微信分享提示