python - librerias - PyCharm no reconoce los módulos instalados en modo de desarrollo
python setup py (8)
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 repositorio 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 sigue presente en PyCharm 5.0.4. Sin embargo, me las arreglé para resolverlo, algo así como.
Por alguna razón 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 (por ejemplo, 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.
Acabo de instalar el paquete usando Pycharm y luego el problema se resolvió.
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 debo instalarlo cada vez que modifico el código fuente.
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
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" -> "Raíz de fuentes".
Nota: esta configuración también lo agregará a PYTHONPATH durante la ejecución desde el menú de ejecución si la casilla de verificación 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":
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.
Extra para expertos
Observe la "secuencia de comandos 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.
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.
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 dinámico que apunta al repositorio de su paquete en lugar de a la instalación de un paquete 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: