PyCharm no reconoce los módulos instalados en modo de desarrollo

Tengo dos proyectos de python en PyCharm 3.4.1 Professional Edition. El primero, llamémoslo p (como paquete), está estructurado como un paquete setuptools (es decir, con setup.py, todos los requisitos, etc., sin embargo, no se carga en pypi ni en ningún otro repository en línea). El segundo, llamémoslo s (como script), es solo un script de python junto con dos módulos.

El proyecto s (en PyCharm) está configurado para usar un virtualenv dedicado, llamémoslo venv .

El problema que tengo es el siguiente: cuando instalo el proyecto (paquete) p en venv como este:

 $ source /path/to/venv/bin/activate (venv)$ cd /path/to/p (venv)$ python3 setup.py develop 

en PyCharm en el proyecto s , las declaraciones de import p son erróneas con el mensaje No hay módulo llamado p . Sin embargo, cuando ejecuto el script en s , todo está bien, el único problema es que el IDE de PyCharm se queja de no poder encontrar el módulo. Puedo vivir con esto pero es muy molesto …

¿Por qué pasó esto? ¿Es una cosa de PyCharm o una cosa relacionada con el embalaje? Ver NOTICIAS a continuación.


El proyecto / paquete p tiene la siguiente estructura:

 p/ | +- p/ | | | +- __init__.py | +- other subpackages, modules, etc. +- setup.py +- README, DESCRIPTION, setup.cfg, etc. 

Cuando configuro el proyecto PyCharm p para vivir en su propio virtualenv e instalarlo allí en modo de desarrollo, todo funciona bien.


NOTICIAS

Este problema aún está presente en PyCharm 5.0.4. Sin embargo, logré resolverlo, algo así como.

Por algunas razones tuve que instalar otro paquete desde pypi. Lo hice a través de PyCharm yendo a Archivo -> Configuración -> Proyecto: -> Intérprete del proyecto, haciendo clic en el signo verde + , encontrando el paquete y presionando el botón Instalar paquete. Después de la instalación, PyCharm reconoce el paquete instalado por python3 setup.py develop . Obviamente, el problema era que PyCharm no tenía un caché sincronizado con la realidad.

Entonces, la nueva pregunta es: ¿se puede decir a PyCharm que actualice sus cachés con respecto al entorno Python utilizado?

A partir de Pycharm 2016.1.4 (edición profesional), parece que abrir un proyecto diferente (p. Ej., A través de Open Recent) y luego abrir el original hace que Pycharm vuelva a indexar los paquetes instalados y, por lo tanto, reconozca los paquetes desarrollados por el desarrollador.

Esto es suficiente para mi.

En el panel del proyecto, el directorio que contiene p debe marcarse como fuente. Disponible en: Haga clic con el botón derecho -> “Marcar directorio como” -> “Orígenes de raíz”.

Nota: esta configuración también lo agregará a PYTHONPATH durante la ejecución desde el menú de ejecución si la checkbox correspondiente a la opción está marcada en “Editar configuraciones” (predeterminado).

Pasé un momento muy malo haciendo que PyCharm reconociera una clase en un módulo que acababa de escribir.

El problema es que PyCharm parece omitir la importación de rutas de clases de módulos, lo que requiere dos correcciones separadas para corregir.

Paso 1

Haga clic derecho en el nombre del módulo y márquelo como “Fuente”:

introduzca la descripción de la imagen aquí

Paso 2

Por alguna razón, de forma predeterminada en PyCharm, en realidad no agrega directorios marcados como “Orígenes de la raíz” a la ruta de Python. Soluciona esto activando esto.

introduzca la descripción de la imagen aquí

Extra para expertos

Observe el “script de inicio” en la imagen de arriba. Supongo que agregar manualmente estas líneas a su script de Python también lograría el mismo resultado.

Probado en

  • Windows 10 x64.
  • PyCharm Community Edition 2017.2.3.

Solución

  • Vaya a ajustes-> intérprete del proyecto .
  • Haga clic en el botón de la rueda enmarcada (icono de configuración de engranajes).
  • En la lista desplegable, haga clic en Mostrar todo … Los intérpretes disponibles se muestran en el cuadro de diálogo Intérpretes del proyecto.

  • Seleccione el intérprete deseado.

  • En la barra de herramientas del cuadro de diálogo Intérpretes del proyecto, haga clic en el icono del botón Mostrar rutas (última opción). Las rutas existentes del intérprete seleccionado se muestran en el cuadro de diálogo Rutas del intérprete.

  • Agregue la ruta de su paquete (paquete que usted desarrolló) aquí.ex / home /../ repo- name

voila !! tú eres bueno para irte.

Explicación
Cada proyecto se refiere a un intérprete que puede encontrar en configuraciones-> intérprete del proyecto . Ahora este intérprete usa un montón de Rutas para buscar una biblioteca. Por defecto, tiene paquetes de sitios y un montón de otras rutas allí.
Ahora, desde que usó pip develop -e o python setup.py develop , se crea un enlace dynamic que apunta al repository de su paquete en lugar de a una instalación de paquetes en el directorio site-packages. Así que la ruta de origen de nuestro paquete no está aquí. Lo que debemos hacer es agregar nuestra ruta de origen a las rutas del intérprete para que funcione.

Árbitro:

  1. https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000019690-PyCharm-not-recognize-development-library-
  2. https://www.jetbrains.com/help/pycharm/installing-uninstalling-and-reloading-interpreter-paths.html

Acabo de tener el mismo problema que el tuyo.

Parece que pycharm no puede reconocer el módulo instalado directamente por setup.py, pero puede reconocer el módulo instalado por pip. Finalmente, uso pip install src_path , pero tengo que pip instalarlo cada vez que modifico el código fuente.

Tipo de solución que funcionó para mí:

Abra ambos proyectos en PyCharm en la misma ventana (área de trabajo). Ahora abra la ventana de configuración, y en “Proyecto -> Dependencias del proyecto” ahora puede seleccionar que el proyecto depende del proyecto p . Las importaciones y autocompletar ahora funcionarán bien.

Acabo de instalar el paquete usando Pycharm y luego el problema se resolvió.

El problema podría ser su ruta de intérprete. Compruebe hacia dónde apunta el intérprete. En la mayoría de los casos, es ~ / PycharmProjects / trial / venv / bin / python y esto podría estar apuntando a un baño de python instalado como parte de Pycharm

Cambie el enlace de software de python a su ruta / usr / bin / python y las cosas deberían funcionar bien