python-3.x 模块“PyPDF2”没有属性“PdfFileReader”

jchrr9hc  于 2023-01-22  发布在  Python
关注(0)|答案(1)|浏览(1270)

我正在沿着“用Python自动化无聊的东西”这本书,但是当我试图运行这个简单的脚本时,我收到了一个错误。

import PyPDF2

pdfFileObj = open('meetingminutes.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

完整的错误消息为:

runfile('D:/Python files/PyPDF2/PyPDF2.py', wdir='D:/Python files/PyPDF2')
Traceback (most recent call last):

  File "<ipython-input-4-caab1b8716b0>", line 1, in <module>
    runfile('D:/Python files/PyPDF2/PyPDF2.py', wdir='D:/Python files/PyPDF2')

  File "C:\Users\cjwu\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

  File "C:\Users\cjwu\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "D:/Python files/PyPDF2/PyPDF2.py", line 22, in <module>
    import PyPDF2

  File "D:\Python files\PyPDF2\PyPDF2.py", line 25, in <module>
    pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

AttributeError: module 'PyPDF2' has no attribute 'PdfFileReader'

谢谢你的帮助!

z9smfwbn

z9smfwbn1#

从这里:
运行文件("D:/Python文件/PyPDF2/www.example.com",wdir ="D:/Python文件/PyPDF2")PyPDF2.py', wdir='D:/Python files/PyPDF2')
您似乎将文件命名为PyPDF2.py,这与PyPDF2包的名称相同。不要这样做,因为这将与从实际PyPDF2包导入的内容冲突。
从模块搜索路径docs:
当一个名为spam的模块被导入时,解释器首先搜索一个具有该名称的内置模块,如果没有找到,则在变量sys.path给出的目录列表中搜索一个名为spam.py的文件。
...
包含正在运行的脚本的目录位于搜索路径的开头,在标准库路径之前。这意味着将加载该目录中的脚本,而不是库目录中同名的模块。
所以当你这样做:

import PyPDF2
PyPDF2.PdfFileReader(pdfFileObj)

import命令将从 * yourPyPDF2.py中查找PdfFileReader,因为它导入了 * yourPyPDF2.py而不是实际的PyPDF2包。您可以通过在import ing之后打印PyPDF2.__file__来检查它,这应该显示当前脚本的路径。
只需将文件命名为其他名称。
示例:
PyPDF2.py**-->mypdfapp.py
实际上,我还建议重命名父文件夹(也是
PyPDF2**)。
示例:
D:/Python文件/PyPDF2/示例网站**--〉D:/Python文件/项目01/示例网站 PyPDF2.py-->**D:/Python files/project01/ mypdfapp.py

相关问题