¿Cómo configurar PYTHONPATH personalizado con VM y PyCharm?

85

Estoy usando IntelliJ con el complemento de Python y la función de intérprete remoto para comunicarme con mi máquina virtual Vagrant. Configura el intérprete remoto correctamente para usar el intérprete de mi VM. Pero, uso un PYTHONPATH personalizado en mi VM, y me gustaría que IntelliJ reconociera esa ruta e incluyera los módulos en esa ruta al desarrollar.

¿Cómo configuro el intérprete remoto de IntelliJ / PyCharm para usar un PYTHONPATH personalizado en la VM?

baalexander
fuente
Tengo exactamente este problema, excepto que tengo muchos proyectos siguiendo un esquema común y ahora mismo (en Emacs) configuro todo dinámicamente. Configurarlo por proyecto en Pycharm parece una carga.
AdamC

Respuestas:

124

Para PyCharm 5 (o 2016.1), puede:

  1. seleccione Preferencias> Intérprete de proyectos
  2. a la derecha del selector de intérpretes hay un botón "...", haz clic en él
  3. seleccione "más ..."
  4. Aparecerá una nueva ventana "Intérpretes del proyecto".
  5. seleccione el botón más correcto (llamado "mostrar rutas para el intérprete seleccionado")
  6. abre una ventana "Rutas de intérprete"
  7. haga clic en el botón "+"> seleccione el directorio PYTHONPATH que desee (la carpeta que contiene los módulos de Python) y haga clic en Aceptar
  8. ¡Hecho! ¡Disfrútala!

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Phil
fuente
Esto es lo que hago en mi proyecto, tan molesto. Tengo proyecto A, proyecto común, proyecto de prueba. Para ejecutar las pruebas unitarias en la prueba del proyecto, agregué dependencias del proyecto, por lo que la prueba del proyecto depende del proyecto A y común, pero aún tengo que agregar manualmente carpetas de A y común en PYTHONPATH.
piense en otro
Esto agregará el directorio al PYTHONPATH global para ese intérprete, ¿verdad? ¿No solo el proyecto?
Ray
@ Ray sí, parece que cambiará la configuración global del intérprete. Pero podemos usar diferentes virtualenv para diferentes proyectos y establecer diferentes PYTHONPATH para ellos.
phil
Tenga en cuenta que primero debe configurar el intérprete como el intérprete de su proyecto; de lo contrario, el botón más a la izquierda está deshabilitado
ospider
En OSX, Cmd + Shift + Period muestra carpetas ocultas en el cuadro de diálogo de selección (por ejemplo, / usr), ya que no parece haber una forma de simplemente escribir la ruta.
Flash el
83

Las instrucciones para editar su PYTHONPATH o solucionar problemas de resolución de importación para la inspección de código son las siguientes:

  1. Abra Preferencias (en una Mac, el atajo de teclado es ⌘,).

Cómo llegar a Configuración desde el menú

  1. Busque Project Structureen la barra lateral a la izquierda debajoProject: Your Project Name

  2. Agregar o quitar módulos en la barra lateral derecha

Configuración de la estructura del proyecto en Pycharm 4.5

EDITAR : He actualizado esta captura de pantalla para PyCharm 4.5

Bjorn
fuente
¿Esto todavía se aplica? Supuestamente tengo el último profesional de PyCharm, pero me faltan muchas de esas categorías ... incluida la estructura del proyecto! ¡¡¡Pero gracias por publicar esto !!!
R Claven
1
Hola, he actualizado la captura de pantalla de PyCharm 4.5, la versión más reciente. Parece que reorganizaron la configuración en la barra lateral.
Bjorn
De hecho, te debo un MASIVO agradecimiento. Estaba jugando con la "configuración predeterminada" en lugar de la configuración del proyecto. Su respuesta aquí me ayudó a darme cuenta de esto y luego resolví muchas discrepancias y funcionó. ¡GRACIAS!
R Claven
¿Hay alguna forma de hacer esto a nivel mundial? agregando /Library/Python/2.7/site-packages y /usr/local/lib/python2.7/site-packages a cada proyecto que abro apesta.
jeremyjjbrown
Sí @jeremyjjbrown, creo que puede hacerlo haciendo clic en "Proyecto de intérprete" y seleccionando la ruta del intérprete que tiene los paquetes del sitio que desea. Esta pregunta solo respondía al hacer que los paquetes específicos del proyecto estuvieran disponibles para sus proyectos. Incluso puede usar un requirements.txt para agregar todo su proyecto deps en pycharm.
Bjorn
16

Para mi la solucion fue ir a

Run > Edit Configuration > Defaults > Python

luego gestiona el

  • "Agregar raíces de contenido a PYTHONPATH" y
  • "Agregar raíz de origen a PYTHONPATH"

casillas de verificación, así como la configuración del campo "Directorio de trabajo".

Si ha configurado sus propias configuraciones de ejecución / depuración, es posible que desee ir a

Run > Edit Configuration > Python > [Whatever you called your config]

y editarlo allí.

Mi problema era que quería tener todo mi repositorio incluido en mi proyecto PyCharm 2016.2, pero solo una subcarpeta era la raíz del código fuente real de Python. Lo agregué como "Source Root" haciendo clic derecho en la carpeta y luego

Mark directory as > Source Root

Luego, desmarque "Agregar raíces de contenido a PYTHONPATH" y marque "Agregar raíz de origen a PYTHONPATH" en el menú de configuración Ejecutar / Depurar. Luego verifiqué la ruta de la carpeta haciendo:

import sys
logger.info(sys.path)

Este resultado:

[
    '/usr/local/my_project_root/my_sources_root', 
    '/usr/local/my_project_root/my_sources_root', 
    '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', 
    '/usr/lib/python3.4/lib-dynload', 
    '/usr/local/lib/python3.4/dist-packages', 
    '/usr/lib/python3/dist-packages'
]

Sin embargo, sin la corrección decía:

[
    '/usr/local/my_project_root/my_sources_root', 
    '/usr/local/my_project_root',                   <-- NOT WANTED
    '/usr/lib/python3.4', 
    '/usr/lib/python3.4/plat-x86_64-linux-gnu', 
    '/usr/lib/python3.4/lib-dynload', 
    '/usr/local/lib/python3.4/dist-packages', 
    '/usr/lib/python3/dist-packages'
]

Lo que significa que tengo la carpeta raíz del proyecto incluida. Esto estropeó la ruta para mí.

André C. Andersen
fuente
Gracias, no soy un experto en Python y siempre me pregunté cómo echar un vistazo a los caminos de importación que puedo alcanzar. (esa sys.pathparte)
Rastikan
Esto no es ideal porque requiere actualizar la configuración de cada ejecución.
StephenBoesch
@javadba Si quieres que funcione para todas las configuraciones, ve a Run > Edit Configuration > Templates > Python.
André C. Andersen
@ AndréC.Andersen ¡gracias! Ni siquiera miraba a plantillas antes.
StephenBoesch
13

Esto se hizo con PyCharm Community 2019.1

  1. Ir a la configuración del proyecto Configuraciones
  2. Vaya a Estructura del proyecto y haga clic derecho en el directorio que desea agregar y haga clic en "Fuentes" Estructura del proyecto: agregar fuentes

Esto debería agregar el directorio a su pythonpath Estructura del proyecto: después de agregar fuentes

dustindorroh
fuente
3

Una actualización de la respuesta correcta proporcionada por phil , para versiones más recientes de Pycharm (por ejemplo, 2019.2).

Vaya a Archivo> Configuración y busque su proyecto, luego seleccione Intérprete de proyectos . Ahora haga clic en el botón con un engranaje a la derecha del intérprete del proyecto seleccionado (solía ser un ... ).

ingrese la descripción de la imagen aquí

En el menú desplegable, seleccione Mostrar todo ... y en el cuadro de diálogo que se abre, haga clic en el icono con una carpeta y dos subcarpetas.

ingrese la descripción de la imagen aquí

Se le presenta un cuadro de diálogo con las rutas actuales del intérprete, haga clic en + para agregar una más.

Fanta
fuente
¡¡¡GRACIAS!!! Un colega y yo hemos estado luchando para configurar su entorno para que coincida con el mío, y no recuerdo haber seguido estos pasos, pero hay un camino importante allí que tengo (que incluso dice "agregado por el usuario").
Drarok
2

En mi experiencia, usar una variable PYTHONPATH es generalmente el enfoque incorrecto, porque no funciona bien con VENV en Windows. PYTHON al cargar preparará la ruta anteponiendo PYTHONPATH a la ruta, lo que puede dar como resultado que su Venv cuidadosamente preparado obtenga preferentemente paquetes de sitios globales.

En lugar de usar la ruta PYTHON, incluya un archivo pythonpath.pth en el directorio de paquetes del sitio relevante (aunque tenga cuidado con las pitones personalizadas ocasionalmente las buscan en diferentes ubicaciones, por ejemplo, busca en el mismo directorio que python.exe para sus archivos .pth) con cada entorno virtual. Esto actuará como un PYTHONPATH solo que será específico para la instalación de Python, por lo que puede tener uno separado para cada instalación / entorno de Python. Pycharm se integra fuertemente con VENV si simplemente va a yse Python de VENV como su instalación de Python.

Consulte, por ejemplo, esta pregunta SO para obtener más detalles sobre los archivos .pth ...

phil_20686
fuente
1

Últimas selecciones de 12/2019 para PYTHONPATH para un intérprete determinado. ingrese la descripción de la imagen aquí

Richard Keene
fuente
0

Bueno, puedes hacer esto yendo al cuadro de diálogo del intérprete. Haga clic en el intérprete que está usando y, debajo de él, debería ver dos pestañas, una llamada Paquetes y la otra llamada Ruta.

Haga clic en Ruta y agregue la ruta de su VM.

Juegos Brainiac
fuente
Cuando hago clic en el intérprete remoto y agrego un Classpath, se queja cuando especifico un directorio remoto (como /home/vagrant/mydir). ¿Necesito preceder el camino con algo? Mi interfaz es un poco diferente ya que estoy usando IntelliJ con el complemento de Python y no PyCharm si eso ayuda.
Baalexander
1
Bueno, puedes ir al intérprete SSH y cargar las cosas desde el archivo vagabundo, es una opción allí.
Juegos Brainiac
0

En Intellij v2017.2 puede ir a:

run > edit configurations > click ... next to the field 'Environment variables' > click the green + sign

Nombre = PYTHONPATH

value = your_python_path

Joris Kinable
fuente