问题标签 [python-jedi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
503 浏览

visual-studio-code - 让 Jedi 查看代码完成的其他路径

我正在尝试让绝地代码完成以使用 Spyder IDE 3.3.3(来自 Anaconda)中的 Python 存根文件。

在 Visual Studio Code 中,我可以通过添加到 VS Code settings.json 来添加文件的位置

可行,Jedi 将使用该目录中的存根提供代码完成。但是在 Spyder 中没有 extraPaths 设置,在 Spyder 中我必须将存根添加到路径中

然后,这适用于获取代码完成,但是当运行代码而不是仅使用存根进行代码完成时,它将尝试执行实际上没有任何实现的存根。

是否可以在 Jedi 中添加一些设置以在某个文件夹中查找代码完成但只有 jedi 所以 Python 不会尝试执行它,就像 Visual Studio Code 一样。

Spyder 中还有其他解决方法,例如将其添加到路径中,但代码无法访问,例如

这确实有效,但我想知道是否有更清洁的解决方案供绝地查看目录。

0 投票
0 回答
371 浏览

python-jedi - 如何为 C++ 库的自动完成正确设置 __doc__

我们有一个 pybind11 模块,并希望使用 Jedi 为其类和功能完成代码。我们的方法是设置__doc__函数的文档字符串,以便 Jedi 可以使用它们来完成。当我们调用时,completions()我们得到一个空列表。Jedi 没有打印错误,也不是通过 set_debug_function。

我们在传递给 Jedi 的字符串中设置模块的路径。模块的导入也包含在此字符串中。

我们需要做什么才能让 Jedi 自动完成自定义 C++ 库类和函数?这通常可以使用__doc__吗?如果可以,格式应该是什么样的?

更新:感谢戴夫的评论,我们能够进一步分析问题。下面是一个例子:

以下set_debug_function()是 Jedi 0.14.0 完成的输出bb.

为什么绝地不返回对象实例的完成bbdir(bb)在 shell 中工作并生成以下输出:

更新 #2 提示: 绝地解释器能够完成我们的对象:

我们得出结论,对象本身没有问题。

更新#3:

对象的自动完成适用于 jedi 0.11.1,但不适用于 0.14.0。我们假设在以后的版本中出现了问题。

0 投票
0 回答
68 浏览

python - 检查完成是否是 Jedi 0.14.0 中的 @property

我们最近将我们使用的 Jedi 版本从 0.13.2 升级到了 0.14.0。

以前,我们可以通过尝试访问它的属性来检查一个项目是否Script.completions是 a 。如果完成是一个属性(或常规属性变量),那么这将引发一个.@propertyparamAttributeError

但是,在 0.14.0 版本中,没有AttributeError为属性提出。

我通过检查此处建议的源来解决此问题,作为类似问题的解决方法

但这似乎不是一个非常干净的解决方案。

有没有更好的方法来检查完成是否是版本 0.14.0 中的属性?

0 投票
1 回答
434 浏览

python - jedi 应该安装在每个 python 项目环境中吗?

我在neovim中使用jedi,更具体地说是deoplete-jedi,我想知道是否应该将它作为依赖项安装在每个项目中,或者我是否可以让jedi与neovim使用相同的python环境(并将设置设置为告诉deoplete-绝地在哪里看)

必须在任何项目中安装它似乎很浪费,但又一次 IDK 它将如何从 neovim 环境中找到我的项目环境。

0 投票
1 回答
304 浏览

python - 如何手动设置python可调用的签名

我想使用Jedi为我的 pybind11 模块提供代码完成。Jedi 评估__signature__可调用对象的完成情况。有关更多信息,请参阅:Jedi 与 pybind11 模块的斗争。但是 pybind11 目前无法生成它们:设置 callables 的 text_signature 属性

__signature__在加载 pybind11 模块后,有没有办法使用 python 解释器手动设置可调用对象(尤其是函数)?像这样的东西:

pyModule.myFunc.__signature__ = *Do some magic here*

是否有一些工具可以生成 python 可调用对象的签名?有很多用于在运行时动态创建函数的包,这些包也创建了签名。但这不是我的用例。

0 投票
0 回答
157 浏览

python - 如何将 IronPython 存根添加到绝地?

如何为 python jedi 自动补全添加路径。我下载了 Atom 和 autocomplete-python 包,我可以在其中选择添加到我的 IronPython 存根的路径。这完美地工作。我目前在脚本中使用 jedi 并希望它查看与 Atom 相同的 IronPython 存根路径,但找不到有关如何执行此操作的任何信息

由于我的问题不够清楚,因此提供了更多信息。

我想使用绝地文档中显示的绝地库。我希望 jedi 使用填充有模拟对象的 python 文件查看我的模块,以获得更多完成建议,因为现在 jedi 只查看我的 python 路径中的模块

0 投票
1 回答
125 浏览

python - 实现绝地可以理解的惰性属性

我一直在使用惰性属性库(https://pypi.org/project/lazy-property/)。它工作得很好,但在我的编辑器中,这些惰性属性不会提供任何自动完成功能。

我的设置是 Atom,使用 ide-python 包 ( https://github.com/lgeiger/ide-python ),它由 python-language-server ( https://github.com/palantir/python-驱动language-server ),它使用 Jedi ( https://github.com/davidhalter/jedi ) 进行自动补全。

基本上,这个问题应该在任何基于 Jedi 的自动完成上下文中都可以重现。

我一直想知道是否有一种方法可以重写惰性属性中的代码(可能使用类型提示等),以便绝地可以理解来自惰性属性装饰方法的类型应该与 if 相同装饰师缺席。

这个装饰器的实现其实超级简单,基本上就是:

有没有人知道我如何重构这个类以让 Jedi 理解它应该假设装饰器不会改变返回值的类型?

任何帮助将不胜感激,干杯。

0 投票
0 回答
86 浏览

python - 来自文档字符串的 Python 函数参数签名

是否有从文档字符串中提取函数 args 签名的解决方案?

首先,解析器应该寻找注解,如果没有注解则回退到文档字符串。我发现了一个专门针对 numpy docstring 的类似问题。我想要一个适用于任何文档字符串格式的通用解决方案。如果你知道如何用绝地做到这一点,请告诉我。

我也知道typed_ast。但是,它再次针对文档字符串的特定格式(而不是注释行)量身定制。

例子。

解析的结果应该是 smth like {'arg1': str}

0 投票
0 回答
397 浏览

python-3.x - 尝试安装绝地:Errno 2

我正在尝试使用 Windows 命令提示符安装绝地。我打字pip install jedi

但我最终得到了这个错误:

我能做些什么来解决这个问题?我正在尝试最终安装 jupyter,但这似乎阻止了我这样做。如果需要更多信息,请告诉我,我是 Python 和一般编程的新手。

0 投票
0 回答
21 浏览

python-jedi - jedi infer() 不适用于我的基于 AWS S3 的自定义 Python 导入器

当我尝试在使用基于 S3 的 Python 导入器支持的 AWS Lambda 中运行绝地时,我收到 ValueError: not enough values to unpack (expected 1, got 0) 异常。我设法让 parso 和 jedi 使用两个符合 Python 标准的小型补丁,但对于这个我感到无能为力。这是堆栈跟踪、调试输出和测试功能代码。它在本地工作。任何可以查看的想法都将受到高度赞赏。最终目标是探索拥有完全无服务器 Python IDE 的可能性。