web-dev-qa-db-fra.com

PyCharm ne reconnaît pas les modules installés en mode développement

J'ai deux purs projets python dans PyCharm 3.4.1 Professional Edition. Le premier, appelons-le p (comme le package), est structuré comme un package setuptools (c'est-à-dire avec setup.py, toutes les exigences, etc., mais il n'est pas téléchargé sur pypi ou tout autre référentiel en ligne.) Le second, appelons-le s (comme le script), est juste un python avec deux modules.

Le projet s est (dans PyCharm) configuré pour utiliser un virtualenv dédié, appelons-le venv.

Le problème que j'ai est le suivant: lorsque j'installe le projet (package) p dans venv comme ceci:

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

dans PyCharm dans le projet s, les instructions import p sont erronées avec le message Aucun module nommé p . Cependant, lorsque j'exécute le script dans s, tout va bien, le seul problème est PyCharm IDE se plaignant de ne pas pouvoir trouver le module. Je peux vivre avec cela mais c'est très ennuyeux ...

Pourquoi cela arrive-t-il? Est-ce une chose PyCharm ou une chose liée à l'emballage? Voir ACTUALITÉS ci-dessous.


Le projet/package p a la structure suivante:

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

Lorsque je configure le projet PyCharm p pour qu'il vive dans son propre virtualenv et que je l'installe en mode développement, tout fonctionne bien.


ACTUALITÉS

Ce problème est toujours présent dans PyCharm 5.0.4. Cependant, j'ai réussi à le résoudre, en quelque sorte.

Pour certaines raisons, j'ai dû installer un autre package à partir de pypi. Je l'ai fait via PyCharm en allant dans Fichier -> Paramètres -> Projet: -> Interprète de projet, en cliquant sur le vert +, En trouvant le package et en appuyant sur le bouton Installer le package. Après l'installation, le package installé par python3 setup.py develop Est bien reconnu par PyCharm. De toute évidence, le problème était que PyCharm n'avait pas de cache en phase avec la réalité.

Donc la nouvelle question est, peut-on dire à PyCharm de mettre à jour ses caches concernant l'environnement utilisé python?

32
zegkljan

Depuis Pycharm 2016.1.4 (édition professionnelle), il semble que l'ouverture d'un projet différent (par exemple via Open Recent), puis l'ouverture de l'original, fait que Pycharm réindexe les packages installés et reconnaisse donc les packages installés.

Cela me suffit.

20
zegkljan

Dans le volet projet, le répertoire contenant p doit être marqué comme source. Disponible sous: Clic droit -> "Marquer le répertoire comme" -> "Racine des sources".

Remarque: Ce paramètre l'ajoutera également à PYTHONPATH pendant l'exécution à partir du menu d'exécution si la case à cocher correspondante pour l'option est cochée dans "Modifier les configurations" (par défaut).

17
mike

J'ai eu un diable de temps pour que PyCharm reconnaisse une classe dans un module que je venais d'écrire.

Le problème est que PyCharm semble ne pas importer par défaut les chemins d'accès aux classes de module, ce qui nécessite deux correctifs distincts pour corriger.

Étape 1

Faites un clic droit sur le nom du module et marquez-le comme "Source":

enter image description here

Étape 2

Pour une raison quelconque, par défaut dans PyCharm, il n'ajoute pas réellement de répertoires marqués comme "Sources Root" au chemin Python. Corrigez cela en l'activant.

enter image description here

Extra pour les experts

Remarquez le "Script de démarrage" dans l'image ci-dessus. Je suppose que l'ajout manuel de ces lignes à votre script Python permettrait également d'obtenir le même résultat.

Testé sur

  • Windows 10 x64.
  • PyCharm Community Edition 2017.2.3.
14
Contango

Solution

  • allez dans settings-> project interpreter .
  • cliquez sur le bouton encadré par la roue (icône d'engrenage des paramètres).
  • Dans la liste déroulante, cliquez sur Afficher tout .... Les interprètes disponibles s'affichent dans la boîte de dialogue Interprètes de projet.

  • Sélectionnez l'interprète souhaité.

  • Dans la barre d'outils de la boîte de dialogue Project Interpreters, cliquez sur l'icône du bouton afficher les chemins (dernière option). Les chemins d'accès existants de l'interpréteur sélectionné s'affichent dans la boîte de dialogue Chemins d'interprétation.

  • Ajoutez le chemin de votre paquet (paquet que vous avez développé) here.ex /home /../ repo-name

voila !! tu es prêt.

Explication
Chaque projet fait référence à un interpréteur que vous pouvez trouver dans settings-> project interpreter . Maintenant, cet interprète utilise un tas de chemins pour rechercher une bibliothèque. Par défaut, il contient des packages de sites et un tas d'autres chemins.
Maintenant que vous avez utilisé pip develop -e ou python setup.py develop , un lien dynamique est créé pointant vers le référentiel de votre package au lieu d'une installation de package dans le répertoire site-packages. Donc, le chemin source de notre package n'est pas ici, ce que nous devons faire est d'ajouter notre chemin source aux chemins de l'interprète pour le faire fonctionner

Réf:

  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
3
lego king

Sorte de solution de contournement qui a fonctionné pour moi:

Ouvrez les deux projets dans PyCharm dans la même fenêtre (espace de travail). Ouvrez maintenant la fenêtre des paramètres, et sous "Projet -> Dépendances du projet", vous pouvez maintenant sélectionner ce projet s dépend du projet p. Les importations et la saisie semi-automatique fonctionneront désormais correctement.

1
Lucas van Dijk

J'ai juste eu le même problème que le vôtre.

Il semble que pycharm ne puisse pas reconnaître le module installé directement par setup.py, mais peut reconnaître le module installé par pip. Enfin, j'utilise pip install src_path, mais je dois le pip install à chaque fois que je modifie le code source.

1
sofx

Je viens d'installer le package à l'aide de Pycharm, puis le problème a été résolu.

0
Hardik Gajjar

Le problème pourrait être votre chemin d'interpréteur. Vérifiez où l'interprète pointe. Dans la plupart des cas, il s'agit de ~/PycharmProjects/trial/venv/bin/python et cela pourrait pointer vers un bain python installé dans le cadre de Pycharm

Modifiez le lien logiciel de python en votre chemin/usr/bin/python et les choses devraient bien fonctionner

0
Shiva