输入/输出错误:无法打开资源,同时从不同的目录导入python文件

2024-10-01 09:41:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用ReportLab生成pdf。但当我试图在其中附加图像时,会出现错误。如果我不包括图像,那么一切都很好。代码运行成功。在

我有以下目录结构。在

parentDir\
   main.py
   childDir\
       __init__.py
       first.py
       second.py
       image.jpg

在主.py在

^{pr2}$

在第一.py在

from second import methodOfSecond

   #using methodOfSecond

在第二.py在

#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不支持这种导入)还是我导入文件的方式不对? 任何帮助都将不胜感激。在


Tags: 代码py图像image目录错误结构jpg
2条回答

你的路径应该是相对于你实际运行的文件,而不是你要导入的模块。在

因此,您需要将图像路径更改为“childDir”/文件段,提供完整路径(或动态确定),或将图像路径作为参数传递给导入的函数。在

所有文件系统操作都与current working directory相关,而这与您所在的Python模块无关。在

在第二.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)

相关问题 更多 >