I/O错误:从其他目录导入python文件时无法打开资源
我正在使用ReportLab生成pdf。但当我试图在其中附加图像时,它会给出错误。如果我不包括图像,那么一切都很好。代码成功运行 我有以下目录结构I/O错误:从其他目录导入python文件时无法打开资源,python,io,reportlab,Python,Io,Reportlab,我正在使用ReportLab生成pdf。但当我试图在其中附加图像时,它会给出错误。如果我不包括图像,那么一切都很好。代码成功运行 我有以下目录结构 parentDir\ main.py childDir\ __init__.py first.py second.py image.jpg main.py from childDir.first import methodOfFirst #using methodOfFirs
parentDir\
main.py
childDir\
__init__.py
first.py
second.py
image.jpg
main.py
from childDir.first import methodOfFirst
#using methodOfFirst
第一,派克
from second import methodOfSecond
#using methodOfSecond
二等兵
#this second.py file have **ReportLab** Code
.............
canvas.drawImage('image.jpg', 0.2*inch, 11.12*inch, width=w*scale, height=h*scale)
.............
这是我的代码的基本框架。但当我执行时,它会生成错误:
raise IOError('Cannot open resource "%s"' % name)
IOError: Cannot open resource "tjsservices.jpg"
handle_pageBegin args=()
我不熟悉python和reportLab,所以不知道导入这种层次结构的正确方法是什么。如果所有文件都在同一个目录中,那么它可以正常工作。但是当我使用这种目录结构时,它失败了
为了简单起见,我提供了这个框架。如果需要更多代码,请告诉我
所以问题是。为什么会出现此错误以及如何解决?这是ReportLab的问题(即ReportLab不支持这种导入)还是我导入文件的方式错误?
任何帮助都将不胜感激 所有文件系统操作都是相对于的,而与您所在的Python模块无关 在second.py中,可以按如下方式计算路径:
import os.path
fn = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'image.jpg')
canvas.drawImage(fn, 0.2*inch, 11.12*inch, width=w*scale, height=h*scale)
您的路径应该是相对于您实际运行的文件,而不是相对于您正在导入的模块
因此,您需要将图像路径更改为'childDir/image.jpg',提供完整路径(或动态确定),或者将图像路径作为参数传递给导入函数。这对我理解实际概念有很大帮助+感谢你的回答简单明了。非常感谢你。