解决No module named ***问题

声明:

  1. 本文中的project(项目)表示代码的最高层目录
  2. package即项目下的包
  3. module即一个.py文件

python 包间模块的互相调用

问题描述

虽然Python是一个轻量级的语言,有时候文件会很多,还是需要通过包(package)来帮助我们管理模块(module)。于是,我们用IDE写代码,通过“创建project——创建package——创建py文件”建立模块,编辑完成后运行,包间模块的调用没有问题。因为在这个过程中,IDE自动记录了包和模块之间的依赖关系,此时调用当前包外的同一个project下的文件不成问题。
倘若我们的代码需要以命令行的形式运行,那就会出现no module named ***的问题

分析问题: python解释器找不到模块,这是Python包间互相调用出了问题,或者说是工作目录的问题。

解决方案一

  1. 在project根目录下创建文件__main__.py
  2. 命令行切换到project根目录下
  3. 执行python -m 文件路径,注意,这个时候文件路径的最后是没有.py后缀的

优点是,只需要改动一个地方
缺点是,不能再使用python -m pdb foo.py调试命令了。

详情见博客python项目内import其他内部package的模块的正确方法

解决方案二

在每个你需要调用外部包模块的文件头添加:

import sys
sys.path.append('你的项目地址')

优点是,简单方便
缺点是,需要改动每个调用外部包的文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值