python 不同级文件,命令行运行调包出错问题

描述

python在用pycharm的时候可以通过 " Project右键选项 >> Mark Directory as >> Sources Root " 来指定当前项目的根路径,从而避免掉包找不到对应路径的问题;但是在命令行运行的时候,不能像IDE一样直接指定项目根路径,就需要在程序开始进行手动添加。
目录结构:
在这里插入图片描述

main.py 的内容是:

from test_a import test_a
test_a.a()
print('ok')

main 文件夹存放的也是 main.py ;
test_a 中存放的是 test_a.py ,内容是:

def a():
    print('a')

问题

直接在当前路径命令行运行 python main.py,没有问题,即已指定当前路径为根路径;
但是使用相对路径运行 python main/main.py ,报错

Traceback (most recent call last):
  File "main/main.py", line 15, in <module>
    from test_a import test_a
ModuleNotFoundError: No module named 'test_a'

相对路径已经更改了根路径,还想使用其他的根路径就需要重新设置。

解决

关于不同级文件调用出现 “ No module named ‘XXX’ ” 的问题,尝试了网上提供加入 _init_ 文件的方法,这种方法也只是告诉python这是个包,并且可以在这里边初始化整个包的一些信息,未能解决当前问题。
最后通过打印当前项目路径发现了问题。

def get_project_path():
    """得到项目路径"""
    project_path = os.path.join(os.path.dirname(__file__),"..",)
    return project_path

path = get_project_path()    
print(path)    # 得到项目的根目录路径

根目录路径输出是“ main/…”,即通过相对路径已经给项目的根路径做了设置,要再想调用其他文件的包,就得重新设置项目路径,参考添加根目录的方法:

https://blog.csdn.net/weixin_40546602/article/details/111579500

在 main/main.py 开头添加

import sys
sys.path.insert(0, '.')  # 直接添加

即可。

总之

一直在用 pycharm 写 python,离开 pycharm 的傻瓜式操作,都忘了 python 本身的运行过程就是寻根,然后层层执行调用。
以后遇到“ No module named ‘XXX’ ”,除去需要调用的官方包,自己写的包就先观察一下需要调用的文件是否处于同一根目录下

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值