python import路径问题

1 路径问题

(1)项目结构与程序内容

在这里插入图片描述

其中,a.py中的内容为:

from b import f2

# a.py
def f1():
    print("this is function f1 in a.py")

f2()

b.py中的内容为:

# b.py
def f2():
    print("this is function f2 in b.py")

demo.py中的内容为:

# demo.py
from folder1.a import f2


f2()
print(__name__)

(2)路径问题

在终端运行a.py和demo.py
在这里插入图片描述
发现a.py能跑通,但demo.py会报错

(3)原因分析

当a.py作为驱动程序时,会将当前目录自动添加到搜索路径(可以查看python语言第12天笔记5 模块搜索路径),b和a在一个目录下,自然可以通过搜索路径找到。

当demo.py作为驱动程序时,相当于将a的代码复制到了demo.py中,但b.py并不与demo.py处于同一目录下,因此找不到b

修改a.py如下:

from folder1.b import f2

# a.py
def f1():
    print("this is function f1 in a.py")

f2()

在终端中,demo.py可以成功运行
在这里插入图片描述
但a.py却不能
在这里插入图片描述
这是因为a.py作为驱动文件时,搜索路径中没有folder1。

假如a.py中调用了b中的函数,a除了有需要被调用的模块外,还有测试程序,如何才能保证a.py和demo.py都能运行?

(4)a和demo同时能运行

修改a.py如下:

import sys
sys.path.append('../')

from folder1.b import f2

# a.py
def f1():
    print("this is function f1 in a.py")

f2()

加上之后,“from folder1.b import f2”的意义就变成了在 …/folder1/b.py中找f2(此时当前路径为folder1)。
输出如下:
在这里插入图片描述
此时都能运行。

2 总结

对于自己写的程序,如果需要被调用,需要在开头加上:

import sys
sys.path.append('../')
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值