【发布时间】:2017-01-11 18:44:39
【问题描述】:
带有 Python3.5 的 PyDev 似乎无法识别来自 c 编译扩展的导入,包括通过 Cython 编译的包。
我正在开发一个最新的 debian/stretch 机器,它带有一个精简的自行安装(在主目录中)Eclipse/Neon,并通过更新站点添加了 PyDev,如果重要的话。
我同时安装了“Python 2.7.13”和“Python 3.5.2+”。
有问题的包之一是 lxml。我安装了 debian 软件包并尝试通过 pip 手动安装(然后在 eclipse 中重新创建了解释器以确保完整查找)。在所有情况下,包确实工作。
在 Python2 中,一切都像宣传的那样工作。
在 Python3 PyDev 下将 from lxml import etree 标记为错误(但生成的程序有效):
Unresolved import: etree richiedi_certificato_dispositivo.py /trasmissione-telematica/Serializzazione line 8 PyDev Problem
注意:我可以import lxml 没有错误,但是任何对lxml.etree... 的访问都将被标记为错误。数据完成是一致的(即:etree 不会出现在提供的列表中)。
lxml 安装在通常的位置:
mcon@vocore:~$ ls -l /usr/lib/python3/dist-packages/lxml
total 2156
-rw-r--r-- 1 root root 8152 Sep 5 2014 builder.py
-rw-r--r-- 1 root root 3366 May 5 2016 cssselect.py
-rw-r--r-- 1 root root 18387 May 5 2016 doctestcompare.py
-rw-r--r-- 1 root root 7641 Sep 25 2011 ElementInclude.py
-rw-r--r-- 1 root root 9490 Aug 20 06:48 _elementpath.py
-rw-r--r-- 1 root root 1710088 Aug 24 10:14 etree.cpython-35m-x86_64-linux-gnu.so
drwxr-xr-x 3 root root 4096 Jan 3 08:58 html
drwxr-xr-x 3 root root 4096 Jan 3 08:58 includes
-rw-r--r-- 1 root root 551 Oct 7 2012 __init__.py
drwxr-xr-x 4 root root 4096 Jan 3 08:58 isoschematron
-rw-r--r-- 1 root root 17450 Aug 20 06:48 lxml.etree_api.h
-rw-r--r-- 1 root root 8902 Aug 20 06:48 lxml.etree.h
-rw-r--r-- 1 root root 366440 Aug 24 10:14 objectify.cpython-35m-x86_64-linux-gnu.so
drwxr-xr-x 2 root root 4096 Jan 3 08:58 __pycache__
-rw-r--r-- 1 root root 92 Sep 5 2014 pyclasslookup.py
-rw-r--r-- 1 root root 8531 Nov 20 2014 sax.py
-rw-r--r-- 1 root root 230 Sep 25 2011 usedoctest.py
mcon@vocore:~/trasmissione-telematica$
如您所见,etree 在共享库中,objectify 也是如此;快速检查还显示,PyDev 不处理 objectify。我检查了一些其他“c-extension”包(例如:import pycurl 和 from Crypto.Util import strxor),结果相同,所以 似乎“C”扩展有问题。
【问题讨论】:
-
您有没有找到合适的解决方案? (我有完全相同的问题,但不能使用 xml.etree...)
-
@TonnyMadsen:很遗憾没有。它们仍被标记为错误,但一切正常(当然,除了完成之外)。如果您能找到解决方案,请告诉我。
标签: eclipse python-3.x pydev python-extensions