使用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处理的。我检查了一些其他“c-extension”软件包(例如:import pycurl
和from Crypto.Util import strxor
),结果相同,所以似乎是“C”扩展名的问题。< / p>
答案 0 :(得分:2)
您是否尝试将有问题的软件包放入强制内置组件中(如http://www.pydev.org/manual_101_interpreter.html中所述)?
如果这不起作用,您的错误日志中是否有错误? (有关获取此信息的详细信息,请参阅http://www.pydev.org/faq.html#PyDevFAQ-HowdoIReportaBUG%3F)