我正在尝试使用imp
库导入库,我的代码如下所示:
import imp
PyPDF2 = imp.load_source('PyPDF2', '/Python Projects/econquizz/PyPDF2-master/PyPDF2/__init__.py')
pdfFileObj = open('./Chapters/Chapter-3_5.pdf', 'rb')
当我尝试运行此代码时,出现以下错误:
Traceback (most recent call last):
File "brains_3.py", line 3, in <module>
PyPDF2 = imp.load_source('PyPDF2', '/Python Projects/econquizz/PyPDF2-master/PyPDF2/__init__.py')
File "/Python Projects/econquizz/PyPDF2-master/PyPDF2/__init__.py", line 1, in <module>
from .pdf import PdfFileReader, PdfFileWriter
ValueError: Attempted relative import in non-package
有人知道如何解决这个问题吗?
非常感谢您的帮助。
答案 0 :(得分:0)
我认为您需要指定包本身作为参数:
PyPDF2 = imp.load_source('PyPDF2', '/Python Projects/econquizz/PyPDF2-master/PyPDF2/')
更好的是,将/Python Projects/econquizz/PyPDF2-master
放在PYTHONPATH
环境变量中,并使用普通的import
语句(import PyPDF2
)。
后续活动:
以下是一份记录,显示了它在我的Ubuntu系统上如何工作:
$ mkdir /tmp/demonstration
$ cd /tmp/demonstration
$ wget https://files.pythonhosted.org/packages/b4/01/68fcc0d43daf4c6bdbc6b33cc3f77bda531c86b174cac56ef0ffdb96faab/PyPDF2-1.26.0.tar.gz
$ tar -zxvf PyPDF2-1.26.0.tar.gz
$ export PYTHONPATH=/tmp/demonstration/PyPDF2-1.26.0/
$ python2
Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import PyPDF2
>>> print(PyPDF2)
<module 'PyPDF2' from '/tmp/demonstration/PyPDF2-1.26.0/PyPDF2/__init__.pyc'>
>>>
>>> help(PyPDF2)
Help on package PyPDF2:
NAME
PyPDF2
FILE
/tmp/demonstration/PyPDF2-1.26.0/PyPDF2/__init__.py
PACKAGE CONTENTS
_version
filters
generic
merger
pagerange
pdf
utils
xmp
[...]
您不需要完全像我那样做。 (特别是,除非您确实不想保留它,否则请不要在/ tmp中执行此操作!)关键是要查看将模块放入的实际目录,并确保将其放入{{1} },并且该python因此能够找到并加载它。
我没有阅读作者发表的有关如何正确安装它的任何说明。从我的源代码运行时,某些模块实际上无法正常工作。某些模块不需要任何特殊安装,并且可以按照其源代码分发的形式正常工作。