我正在沿着“用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'
谢谢你的帮助!
1条答案
按热度按时间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
命令将从 * 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