问题标签 [pyi]

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 投票
1 回答
775 浏览

python - 类实现中的python存根属性“未解析的属性引用”

我在我的pyi模块(scheme.pyi)中创建了一个类接口:

在我的 scheme.py 中,我实现了这样的类:

PyCharm 说“类目录的未解析属性参考”__elements“”

0 投票
1 回答
749 浏览

python - PyCharm 中的部分存根

我想在我的项目中引入部分类型注释。例如重载。我发现 pep561 引入了部分存根文件支持。

我使用 PyCharm 开发我的项目并添加相应的*.pyi文件。并得到了预期的信息,但 PyCharm 报告在 pyi 文件中找不到参考。

当 pyi 文件中没有条目时,是否可以强制 PyCharm 查看原始 py 文件?或者也许它也可以部分进入课堂?

我创建示例项目来显示问题(原始项目很大): 在“__init__.pyi”中找不到引用“CC”

主文件

__init__.py

__init__.pyi

0 投票
1 回答
251 浏览

python-3.x - Counter 的 most_common 方法的底层实现是什么?

我找到了一个 pyi 文件,它具有以下定义

这怎么可能发生?列表没有定义,没有执行?


在这里为追随者强调一些有价值的建议:

列表是从打字模块导入的;它与列表不同。.pyi 文件不需要导入它,因为存根文件永远不会被执行;它们只需要在语法上是有效的 Python

如果您使用 from future import annotations,您将不必导入类型来使用 List 等。在 .py 文件中的函数注释中也是如此,因为函数注释将被视为字符串文字。(从 Python 4 开始,这将是默认行为。有关详细信息,请参阅 PEP 563。)

0 投票
0 回答
1642 浏览

python - Import a pyi (type stub file) into a normal python module

I have a program (like a macro) that runs within a parent program and imports an API module from that program (lets call it foo). The problem is that that module only exists within that program, so I can't do things like run pydocmd outside the software because the script throws a ReferenceError. To aid in my own development I have create a type stub file, foo.pyi, in my project directory. What I would like to do is import that type stub as a normal Python file if the import fails, to provide dummy functions and properties. Something like:

This raises an error, however, as it's trying to import pyi from the foo library that does not exist in the project folder. The only other option I can think of is to have an identical copy of the .pyi file as, say "dummy_foo.py" but then I have to maintain two copies of the same file in one repo. I'd rather not do that.

0 投票
1 回答
3469 浏览

python - *.pyi 文件中的代码 '_T = TypeVar('_T')' 是什么意思?

我是 Python 注释的新手(类型提示)。我注意到pyi文件中的许多类定义继承到Generic[_T], 和_T = TypeVar('_T').

我一头雾水,这是什么_T意思?</p>

0 投票
1 回答
967 浏览

python - 使用 pyinstaller 将 .py 文件和 .txt 文件合并到 .exe 文件中

我有一个 python 程序,它接受两个文本文件作为输入。我已经使用 pyinstaller 将此 python 程序(一个 .py 文件)转换为一个 .exe 文件。运行时的 .exe 文件给出 FileNotFoundError。但是,当 .txt 文件被复制到 .exe 所在的路径时,它可以正常工作。我的意图是不复制 .txt 文件,而是将 .txt 文件与 .exe 捆绑在一起,以使 .txt 文件无法访问。我想将所有 .txt 文件依赖项与 .exe 捆绑在一起,最终应该只有一个 .exe 文件,当我运行它时,它的工作方式应该与我运行 python 程序时相同。请建议我实现相同目标的方法

我是 pyinstaller 的新手。我曾尝试将 .txt 文件添加到 .spec 文件中的数据参数。但这无法将文本文件复制到我的 .exe 所在的 dist 文件夹中。但正如我所提到的,我只需要 .exe 文件。即使 .exe 文件共享给无权访问任何文本文件的其他人,该 .exe 也必须成功运行

a.datas+=[('D:/Trial/src/readme_text_files/readme1.txt','readme_text_files/readme1.txt','readme_text_files'), ('D:/Trial/src/readme_text_files/readme2.txt', 'readme_text_files/readme2.txt','readme_text_files'), ]

上面的代码已添加到 .spec 文件中,因此我假设 readme_text_files 必须复制到运行时存在 .exe 的文件夹中:pyinstaller spec_filename.spec

0 投票
0 回答
846 浏览

python - 如何将类型提示添加到我的猴子修补函数到现有模块的类?

我想知道如何将类型提示(用于 PyCharm IDE 代码完成支持)添加到def links(self) -> List[str]我猴子修补到现有模块类的方法中:

我的功能

猴子修补函数到Issuepython-jira 的类

现在我遇到的问题是,当我在Issue对象上调用此方法时,PyCharm 显然无法识别它。我尝试遵循PEP 484 Stub Files并使用文件中的typing模块.pyi来让 IDE 找到我的猴子补丁函数的定义。

问题.pyi

但是,它不会起作用。我的假设是文件结构在某种程度上不正确:

文件位置

jira-python module>> 站点包(用 下载pip install jira

myFile.py>> /temp/myFile.py

Issue.pyi>> /temp/jira/resources/Issue.pyi 文件夹

0 投票
0 回答
32 浏览

eclipse - 从转到定义中排除 *.pyd 文件(使用 ctrl+单击)

我的 Eclipse IDE PyDev 插件有一个小问题 - 当我使用 Python 和 *.pyd 格式的库开发程序时,我无法进行定义,因为它是二进制格式。但是有对应的 *.pyi 文件和源代码。如何“强制”PyDev 使用 *.pyi 文件而不是 *.pyd 文件进行转到定义?

0 投票
1 回答
71 浏览

python - flake8 条件与存根文件中的 python 版本

我需要同时支持 python 3.8 和低于 3.8 的版本,但是我需要导入到我的存根 (*.pyi) 文件中的包在 <3.8 中具有不同的名称

一般来说,这应该可以完成这项工作,但是当我使用 *.pyi 文件配置(flake8 --config flake8-pyi.ini)运行 flake8 时,我得到了这个:

Y002 If test must be a simple comparison against sys.platform or sys.version_info

有什么想法可以做些什么吗?

提前致谢!

0 投票
1 回答
2531 浏览

python - 由于 __init__.pyi 文件,xmlsec 在新版本中被破坏

xmlsec在我的项目中使用,它使用的是最新版本,今天有新版本,它失败了。

当我检查详细错误时,它是package init file 'src/xmlsec/__init__.py' not found (or not a regular file). 在今天的最新版本中,它已更改为__init__.pyi.

https://github.com/mehcode/python-xmlsec/blob/1.3.7/src/xmlsec/init .pyi_

如何处理这个pyi文件?