我正在尝试在我的脚本中使用pyquery,但是当pyquery尝试从lxml导入etree时,我遇到了问题。但是,当我在IDLE解释器本身上导入pyquery时,不会发生此问题。所以,如果我把
import pyquery
进入IDLE解释器,它的工作原理,没问题。但是,如果我把
import makepath
import pyquery
到一个名为PyQueryTest.py的脚本中,它在终端中给出
Traceback (most recent call last):
File "/Applications/Python 3.5/PythonPrograms/PyQueryTest.py", line 4, in <module>
import pyquery
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pyquery/__init__.py", line 11, in <module>
from .pyquery import PyQuery
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pyquery/pyquery.py", line 9, in <module>
from lxml import etree
ImportError: cannot import name etree
这里,makepath.py是一个脚本,它将预装的Python包的位置附加到sys.path,如下所示:
import sys
sys.path.append('/Library/Frameworks/Python.framework/Versions/' + \
'3.5/lib/python3.5/site-packages')
我正在使用Mac并安装了Python 3.5,因此我以前遇到过问题,因为我的程序运行在与预安装的Python软件包不同的目录中。但是,在我的所有脚本中,自从将makepath.py放入我的程序文件夹并将其导入程序后,我已经运行了,修复路径似乎有效。
但是,这里显然存在一些我看不到的问题。导入在解释器中工作正常,但在脚本中失败。如果有人能指出我的解决方案,我将非常感激。谢谢。
- 编辑:为了澄清,如果我在IDLE解释器中导入lxml,然后调用lxml.etree,我得到
<module 'lxml.etree' from '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/lxml/etree.cpython-35m-darwin.so'>
这就是我认为etree所在的位置,这就是为什么我对它无法正确导入的原因感到困惑。