有没有办法*真的*强制 pydev 使用强制内置?
Posted
技术标签:
【中文标题】有没有办法*真的*强制 pydev 使用强制内置?【英文标题】:Is there a way to *really* force pydev to use a forced builtin? 【发布时间】:2012-04-18 11:52:02 【问题描述】:我正在使用 pydev 开发一个 pyclutter 应用程序。 Clutter 被添加到解释器路径并位于强制内置列表中,但 clutter 命名空间中的所有对象都显示为“缺少导入”错误(即红色曲线)。
是否有另一种方法可以强制 pydev 的内省更加健壮?我怀疑它可能比平时更难反省混乱的内容,因为它使用 pygobject 将对象从共享 C 库中拉出,但是如果我使用 in-IDE python 调试器查看模块的内容,其中的对象包都显示出来了。
谢谢,
【问题讨论】:
【参考方案1】:好吧,如果你在那里添加一个对象(比如,'mypy.lib'),PyDev 将创建一个 shell,在其中导入该模块(即:import mypy.lib)并在其中执行一个目录(即:dir (mypy.lib))。
如果由于某种原因执行 dir() 确实在命令行中起作用但在代码完成中不起作用,那么这可能是 PyDev 中的一个问题,但我认为真正的问题是某些库并没有真正公开他们在 dir() 上拥有什么,就在您访问某些“已知”属性时,在这种情况下,目前使其工作的唯一方法是创建一个具有实际接口的模块(然后根据需要访问事物)或提供“预定义Completions”——参见“预定义的 Completions”主题:http://pydev.org/manual_101_interpreter.html
编辑:如果上述情况没有帮助,它“通常”是一个 PYTHONPATH 错误配置问题(即:添加任何模块后,您应该转到解释器配置并添加缺少的路径——通常只需添加/删除它可以解决问题,但请注意,如果实际路径本身没有任何变化,您可以转到解释器配置页面,然后按“应用”并选择要重新索引的解释器)——如果仍然没有,请告诉我您的问题(请注意,我在这里安装了 clutter,它对我来说可以正常工作)。
【讨论】:
该类似乎在 dir(module) cl.ly/2e1b1U0s2t1B2h0g1c3g 中,我已经仔细检查过它是否在强制内置函数 cl.ly/0I001j3U3q263r1C1e2u 我已经仔细检查了正确的目录已添加到系统 PYTHONPATH cl.ly/3W182s3I2b0h1m160q1P 其实PYTHONPATH是不正确的。你不应该添加站点包/混乱,只添加站点包(事实上,你不应该在站点包下面添加任何其他目录——PYTHONPATH 应该只包含安装库的父目录——即:包含杂乱目录的文件夹(又包含__init__.py
)
这两种方式都不起作用,我只是添加了杂乱目录以尝试匹配我在上面看到的内容(所有鸡蛋都包含在 pythonpath 中)。解释器发现库很好:/
尝试执行以下操作:删除解释器,再次添加它,重新启动 eclipse(只是为了安全起见)并检查一切是否正常......如果没有,请发布您的 pythonpath 设置的图片再次。以上是关于有没有办法*真的*强制 pydev 使用强制内置?的主要内容,如果未能解决你的问题,请参考以下文章