Powiedzmy mam bardzo prosty pakiet o następującej strukturze:Opakowania pliki pośredniczące
.
├── foo
│ ├── bar
│ │ └── __init__.py
│ └── __init__.py
└── setup.py
zawartość plików:
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
Pozostałe pliki są puste.
zainstalować pakiet za pomocą pip
:
cd foobar
pip install .
i może potwierdzić, że jest prawidłowo zainstalowana.
Teraz chcę utworzyć oddzielny pakiet z plikami króćcami:
.
├── foo
│ ├── bar
│ │ └── __init__.pyi
│ └── __init__.pyi
└── setup.py
Zawartość plików:
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: ...
mogę zainstalować ten pakiet, widać, że tworzy anaconda3/shared/typehints/python3.5/foo/bar/__init__.pyi
w moim Anaconda korzenia, ale nie wygląda na to jest rozpoznawane przez pycharm (mam żadnych ostrzeżeń). Kiedy umieszczam plik pyi
w pakiecie głównym, wszystko działa poprawnie.
Byłbym wdzięczny za wszelkie wskazówki, jak do tej pracy:
- Próbowałem zrobić jakiś sens z PEP 484 - Storing and distributing stub files ale bezskutecznie. Nawet część
pathlib
wydaje się obrażać moją wersjędistutils
- PY-18597 i https://github.com/python/mypy/issues/1190#issuecomment-188526651 wydaje się być powiązana, ale jakoś nie mogę połączyć kropek.
- Próbowałem umieszczać kody pośredniczące w
.PyCharmX.X/config/python-skeletons
, ale to nie pomogło.
Niektóre rzeczy, które pracują, ale nie rozwiąże problemu:
- wysyłanie plików pośredniczące w bieżącym projekcie i oznakowanie jako źródeł.
- Dodawanie katalogu głównego pakietu do ścieżki tłumacza (przynajmniej w niektórych prostych przypadkach).
więc pytania: Jak stworzyć minimalne, podziałowi pakiet z króćców Python, które zostaną uznane przez istniejących narzędzi. Na podstawie doświadczeń podejrzewam jeden z dwóch problemów:
- ja źle strukturę, która powinna być utworzony przez pakiet w
shared/typehints/pythonX.Y
- jeśli to prawda, to w jaki sposób należy określićdata_files
? - PyCharm w ogóle nie bierze pod uwagę tych plików (wydaje się, że niektóre komentarze w połączonym wydaniu są sprzeczne).
- Wygląda na to, że działa dobrze, ale popełniłem błąd w konfiguracji i szukałem problemu zewnętrznego, który nie istnieje.
- Czy istnieją jakieś ustalone procedury rozwiązywania takich problemów?
Która wersja pycharm i Który OS? – fedepad