J'ai créé un venv en utilisant python3.6 sur mon mac os dans ce dossier /Users/kim/Documents/Apps/PythonApps/python36-miros-a3
J'ai couru un pip install pylint
après avoir activé l'environnement virtuel
Mon espace de travail est dans /Users/kim/Documents/Apps/WebApps/miros-a3
Dans mon espace de travail vscode, j'ai les paramètres d'espace de travail suivants
{
"folders": [
{
"path": "."
}
],
"settings": {
"python.pythonPath": "/Users/kim/Documents/Apps/PythonApps/python36-miros-a3/bin/python3.6",
"python.venvPath": "/Users/kim/Documents/Apps/PythonApps"
}
}
J'ai essayé de définir un chemin personnalisé pour le pylint et également de changer le venvpath.
Le pylint a continué de se plaindre de la déclaration d'importation en disant qu'elle n'existait pas.
Comme vous pouvez le voir, ils se trouvent dans le même dossier et je peux certainement exécuter mes fichiers python.
Que puis-je faire pour éviter ce type d'erreurs d'importation faussement positives?
J'ai également essayé ce qui suit:
code
pour activer le vscode comme recommandé ici https://code.visualstudio.com/docs/setup/macPylint a quelques bizarreries. Dans ce cas, il ne sait pas où trouver votre module car il se trouve dans le sous-répertoire de votre chemin venv. Pour résoudre ceci:
Placez ce paramètre dans les paramètres de votre espace de travail ou de votre dossier:
"python.linting.pylintArgs": [
"--init-hook",
"import sys; sys.path.append('<path to folder your module is in>')"
]
ou peut-être mieux
Générez un fichier .pylintrc. Depuis le terminal intégré avec course activée par venv:
pylint --generate-rcfile > .pylintrc
puis ouvrez le fichier généré et décommentez la partie init-hook = pour être:
init-hook='import sys; sys.path.append("<path to folder you module is in>")'
Lisez les paramètres . Pylintrc et Tweak si vous le souhaitez. Dans les deux cas, le chemin doit pointer vers votre dossier "base de données".
Après avoir appris les paramètres du pylône, faites-le de la bonne façon:
from database.database_dispatcher import ...
Voir cette réponse par Anthony Sottile.
Pour moi, pylint
a raison de signaler cette erreur ici
le module de niveau supérieur est database
(il contient un __init__.py
fichier)
Votre importation doit ressembler à (entièrement absolue)
from database.database_dispatcher import ...
ou (relatif explicite) (oui! le .
avant que le nom du module soit intentionnel)
from .database_dispatcher import ...
Je suppose que vous invoquez actuellement votre script en tant que python ./database/main.py ...
qui met ./database
au début de sys.path
donc il semblerait apparaître que vos importations fonctionnent correctement - ceci est cependant un pas de côté dans la structure de votre module. Vous devriez invoquer votre script en utilisant python -m database.main ...
au lieu.
Notez que relatif implicite les importations ont été supprimées dans python 3.x - bien que cette verrue (imo) du script sys.path
l'insertion reste.
Juste mon 0,02 $ sur la façon dont je l'ai corrigé dans ma situation.
Mon problème était totalement lié à l'installation de pylint dans le monde et au codage dans un venv. vscode essayait d'utiliser le pylint installé globalement qui n'était tout simplement pas au courant des dépendances que j'ai installées dans mon Python venv. Ce réponse a résolu mon problème. Il pointe ici qui a expliqué comment configurer vscode pour qu'il s'exécute en utilisant le venv pour mon projet. Une fois que j'ai fait cela, vscode a immédiatement lancé un avertissement disant que je n'avais pas d'outil de peluchage installé et m'a invité à en installer un. Une fois cela fait, mon peluchage faux -les positifs sont partis.