python导入包出错_Python运行Unittest作为包导入错误

当不设置PYTHONPATH时,Python应用运行正常但单元测试出现ImportError,找不到'models.transactions'模块。问题源于在导入'app'及'unittest'模块时,模块路径解析混乱。文中探讨了不用修改PYTHONPATH和sys.path的解决方案,分析了应用和测试的模块导入顺序,并给出了应用和相关模块的代码示例。
摘要由CSDN通过智能技术生成

I.前言:应用程序的目录结构和模块在文章末尾列出.

二.问题陈述:如果未设置PYTHONPATH,则应用程序运行,但是单元测试失败,并出现ImportError:没有名为models.transactions的模块.尝试导入时会发生这种情况

app.py中的交易.如果PYTHONPATH设置为/ sandbox / app,则应用程序和

unittest运行没有错误.解决方案的约束条件是不必设置PYTHONPATH,并且

sys.path不必通过编程方式进行修改.

三,详细信息:考虑以下情况:设置PYTHONPATH并将test_app.py作为软件包/ sandbox $python -m unittest tests.test_app运行.查看__main__的打印语句

遍及整个代码:

models : app.models.transactions

models : models.transactions

resources: app.resources.transactions

app : app.app

test : tests.test_app

单元测试首先导入应用程序,因此有app.models.transactions.下次导入该应用程序

尝试是resources.transactions.导入时,它会自己导入model.transactions和

然后我们看到__name__代表app.resources.transactions.其次是app.app

导入,最后是unittest模块tests.test.app.设置PYTHONPATH允许应用程序解析模型.

一种解决方案是将model.transactions放入resources.transaction内.但是还有另一种方法可以解决这个问题吗?<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值