Error de PyLint "No se puede importar": ¿cómo configurar PYTHONPATH?

Resuelto EMP asked hace 14 años • 0 respuestas

Estoy ejecutando PyLint desde Wing IDE en Windows. Tengo un subdirectorio (paquete) en mi proyecto y dentro del paquete importo un módulo desde el nivel superior, es decir.

__init__.py
myapp.py
one.py
subdir\
    __init__.py
    two.py

En el interior two.pylo tengo import oney esto funciona bien en tiempo de ejecución, porque el directorio de nivel superior (desde donde myapp.pyse ejecuta) está en la ruta de Python. Sin embargo, cuando ejecuto PyLint en two.py me da un error:

F0401: Unable to import 'one'

¿Cómo puedo solucionar esto?

EMP avatar Dec 14 '09 14:12 EMP
Aceptado

Hay dos opciones que conozco.

Uno, cambie la PYTHONPATHvariable de entorno para incluir el directorio encima de su módulo.

Alternativamente, edite ~/.pylintrcpara incluir el directorio encima de su módulo, así:

[MASTER]
init-hook='import sys; sys.path.append("/path/to/root")'

(O en otra versión de pylint, el init-hook requiere que cambies [General] a [MASTER])

Ambas opciones deberían funcionar.

Brian M. Hunt avatar Jun 17 '2010 19:06 Brian M. Hunt

La solución para modificar la ruta init-hookes buena, pero no me gusta el hecho de que tuve que agregar una ruta absoluta allí, como resultado no puedo compartir este archivo pylintrc entre los desarrolladores del proyecto. Esta solución que utiliza la ruta relativa al archivo pylintrc funciona mejor para mí:

[MASTER]
init-hook="from pylint.config import find_pylintrc; import os, sys; sys.path.append(os.path.dirname(find_pylintrc()))"

Tenga en cuenta que pylint.config.PYLINTRCtambién existe y tiene el mismo valor que find_pylintrc().

alex_koval avatar Aug 29 '2016 13:08 alex_koval

El problema se puede resolver configurando la ruta de pylint en venv: $ cat .vscode/settings.json

{
    "python.pythonPath": "venv/bin/python",
    "python.linting.pylintPath": "venv/bin/pylint"
}
jeanerpp avatar Dec 24 '2018 02:12 jeanerpp