Скажем, у меня есть очень простой пакет со следующей структурой:упаковки файлов заглушки
.
├── foo
│ ├── bar
│ │ └── __init__.py
│ └── __init__.py
└── setup.py
Содержимое файлов:
setup.py
:from distutils.core import setup setup( name='foobar', version='', packages=['foo', 'foo.bar'], url='', license='Apache License 2.0', author='foobar', author_email='', description='' )
foo/bar/__init__.py
:def foobar(x): return x
Остальные файлы пустые.
установить пакет с помощью pip
:
cd foobar
pip install .
и может подтвердить правильность его установки.
Теперь я хочу создать отдельный пакет с окурка файлов:
.
├── foo
│ ├── bar
│ │ └── __init__.pyi
│ └── __init__.pyi
└── setup.py
Содержимое файлов:
setup.py
:from distutils.core import setup import sys import pathlib setup( name='foobar_annot', version='', packages=['foo', 'foo.bar'], url='', license='Apache License 2.0', author='foobar', author_email='', description='', data_files=[ ( 'shared/typehints/python{}.{}/foo/bar'.format(*sys.version_info[:2]), ["foo/bar/__init__.pyi"] ), ], )
foo.bar.__init__.pyi
:def foobar(x: int) -> int: ...
Я могу установить этот пакет, видеть, что он создает anaconda3/shared/typehints/python3.5/foo/bar/__init__.pyi
в моем корне Анаконда, но это не выглядит, как она признается PyCharm (я не получаю никаких предупреждений). Когда я помещаю pyi
файл в основной пакет, все работает нормально.
Я был бы признателен за любые подсказки, как сделать эту работу:
- Я пытался сделать какой-то смысл от PEP 484 - Storing and distributing stub files, но безрезультатно. Даже
pathlib
часть кажется оскорбительной моей версииdistutils
- PY-18597 и https://github.com/python/mypy/issues/1190#issuecomment-188526651, похоже, связаны, но почему-то я не могу подключить точки.
- Я попытался поместить штыри в
.PyCharmX.X/config/python-skeletons
, но это не помогло.
Некоторые вещи, которые работают, но не решить проблему:
- Собираем заглушек файлы в текущем проекте и маркировки в качестве источников.
- Добавление корня пакета заглушек в путь интерпретатора (по крайней мере, в некоторых простых случаях).
Таким образом, вопросы: Как создать минимальный, распространяемый пакет с заглушками Python, которые будут признаны существующими инструментами. На основании экспериментов, я подозреваю, что одна из двух проблем:
- я понял структуру, которая должна быть создана с помощью пакета в
shared/typehints/pythonX.Y
- если это так, как я должен определитьdata_files
? - PyCharm не рассматривает эти файлы вообще (это, кажется, противоречит некоторым комментариям в связанной проблеме).
- Предполагается, что все будет хорошо, но я сделал некоторые ошибки конфигурации и искал внешнюю проблему, которая не существует.
- Существуют ли установленные процедуры для устранения таких проблем?
Какой PyCharm версию и какую ОС? – fedepad