#python-3.x #pylint #python-extensions #pyi
#python-3.x #pylint #python-расширения #pyi
Вопрос:
У меня есть скомпилированное расширение Python. Полученный двоичный mylib.so
файл может быть импортирован в скрипт Python и работает нормально.
Теперь мне интересно, как написать файл-заглушку интерфейса mylib.pyi
таким образом, чтобы pylint и сервер языка Python, используемый в VS Code, могли его использовать?
На данный момент собственная библиотека находится только в корне моих скриптов. При размещении mylib.pyi
рядом с ним pylint игнорирует его.
Ответ №1:
Я знаю, что этому вопросу год, но ответ может помочь следующему человеку. Мне удалось сделать это, написав следующий установочный файл:
from distutils.core import setup, Extension
extension = Extension(
name = 'dummy',
sources = ...,
...
)
setup(
name = 'dummy',
ext_modules = [extension],
packages = ['dummy'],
package_dir = {'dummy' : './stub'},
package_data = {
'dummy': ['__init__.pyi', 'py.typed']
}
)
Насколько я понимаю, stub
каталог обрабатывается как отдельный пакет и устанавливается вместе с расширением. Я тестировал его только с помощью vscode, но я считаю, что все IDE должны иметь возможность его анализировать. Полный код можно найти здесь.