python pycharm anaconda python-3.5

python - Empaquetado de archivos



pycharm anaconda (1)

Digamos que tengo un paquete muy simple con la siguiente estructura:

. ├── foo │   ├── bar │   │   └── __init__.py │   └── __init__.py └── setup.py

Contenido de los archivos:

  • 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

  • Los archivos restantes están vacíos.

Instalo el paquete usando pip :

cd foobar pip install .

y puede confirmar que está instalado correctamente.

Ahora quiero crear un paquete separado con archivos de código auxiliar:

. ├── foo │   ├── bar │   │   └── __init__.pyi │   └── __init__.pyi └── setup.py

Contenido de los archivos:

  • 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: ...

Puedo instalar este paquete, ver que crea anaconda3/shared/typehints/python3.5/foo/bar/__init__.pyi en mi raíz de Anaconda, pero parece que PyCharm no lo reconoce (no recibo ninguna advertencia) . Cuando pyi archivo pyi en el paquete principal, todo funciona bien.

Agradecería cualquier consejo sobre cómo hacer que esto funcione:

Algunas cosas que funcionan, pero no resuelven el problema:

  • Poner archivos de resguardo en el proyecto actual y marcarlos como fuentes.
  • Agregar la raíz del paquete de código auxiliar a la ruta del intérprete (al menos en algunos casos simples).

Entonces, las preguntas: cómo crear un paquete mínimo y distribuible con apéndices de Python, que será reconocido por las herramientas existentes . Basado en los experimentos sospecho uno de dos problemas:

  • shared/typehints/pythonX.Y mal la estructura que debería ser creada por el paquete en los shared/typehints/pythonX.Y . Si esto es cierto, ¿cómo debo definir los data_files ?
  • PyCharm no considera estos archivos en absoluto (esto parece ser contradicho por algunos comentarios en el tema vinculado).
  • Se supone que funciona bien, pero cometí un error de configuración y busqué un problema externo que no existe.
  • ¿Hay algún procedimiento establecido para solucionar problemas como este?

El problema es que no incluyó el archivo foo/__init__.pyi en su distribución de código auxiliar. Aunque está vacío, foo un paquete de archivos de código auxiliar y permite la búsqueda de foo.bar .

Puede modificar los data_files de data_files en su setup.py para incluir ambos

data_files=[ ( ''shared/typehints/python{}.{}/foo/bar''.format(*sys.version_info[:2]), ["foo/bar/__init__.pyi"] ), ( ''shared/typehints/python{}.{}/foo''.format(*sys.version_info[:2]), ["foo/__init__.pyi"] ), ],