6
votes

Chemin un niveau trop bas dans la console Python de Pycharal

Je travaille sur ma première grande application Python et j'ai des problèmes avec l'environnement. J'essaie d'utiliser la console Python (à Pycharm). Lorsque je tire hors de la console, je reçois cela - xxx

quand je le fais - xxx

maintenant si j'essaie de faire une importation Pour l'un de mes fichiers de projet, je dois faire, par exemple xxx

au lieu de simplement xxx

le problème de Ceci est Config Manager comporte des importations par rapport au dossier GitFlow et ceux-ci ne sont pas trouvés.

J'ai supposé ce que je demandais est quelle est la commande de dire à la console Python d'aller efficacement xxx

* * un peu Plus d'info xxx

* * structure de répertoire xxx

======= ============ plus Essayer

J'ai lu et j'ai trouvé ce genre de choses: xxx

==== ============= Encore plus d'infos xxx

======================== Hey, petit coupthru. J'ai pris un pas en arrière et j'ai considéré que le mot «Conf» est un mot réservé ou un paquet qui existe déjà quelque part. Alors j'ai renommé IT Config. Maintenant, je reçois xxx

maintenant, à partir de la structure de répertoire que vous voyez ci-dessus, vous voyez des exceptions est à la base du projet. Pourquoi pourrait-il désormais trouver le module et la classe, mais le code du module ne peut pas trouver quelque chose dans la racine?

======================== ================= Vous pouvez extraire mon projet si vous voulez vous faire une fissure. c'est à xxx

im toujours soulevé.

================ Je suis toujours en train d'apprendre des commandes. quand je fais cela xxx

Big Thing Thing, mais la chose intéressante est cette ligne xxx

la chose drôle est la Le fichier contenant toutes mes exceptions est également appelé des exceptions. Dès que j'ai renommé que le fichier à flow_exceptions, tout alluma et a bien fonctionné. Bien que cela n'a pris que la moitié de la journée = -)


8 commentaires

Il s'agit d'un lien pour importer à l'aide de Python 3.3 et Voici le même lien pour Python 2.7. Pourriez-vous montrer la structure de répertoire correspondante?


Voilà y aller. Si vous avez besoin d'autres infos, faites le moi savoir. Je fais juste tourner mes roues ici


Ce qui ne fonctionne pas pour vous fait travaille pour moi. Utilisez-vous Python 2.7?


Eh bien, je ne suis pas sûr de ce qui se passe. Cela a fonctionné quand je l'ai testé sur Python 2.7 aussi. J'espère qu'un vrai pythonista peut vous aider ici.


oui je suis complètement percuté. J'ai quitté Pycham et je suis allé à une ligne de commande et je reçois la même chose. im lisant sur init .PY fichiers. Peut-être que je fais quelque chose d'étrange là-bas.


__ init __. Les fichiers PY sont appelés lorsque vous importez un package - donc si vous importez Conf , le fichier __ init __. py sera exécuté en premier. Vous pouvez également faire des choses spéciales, comme définir ce qui se passe lorsque vous dites de Conf Importer * . Vous pouvez définir ce qui est réellement importé. Je ne l'ai pas beaucoup utilisé, mais j'espère que cela aide du tout.


Donc, le gitflow / __ init__.py doit-il avoir une sorte de référence à CONF à être vu ou est-ce que fait implicitement?


Ah, donc le problème était que vous avez nommé un module exceptions.py ! Débarrassez-vous de la partie où vous expliquez cela dans la question, postez-le comme une réponse et acceptez-le! Bonne trouvaille.


5 Réponses :


0
votes

Si vous Just em> veux faire code> CD gitflow CODE>, vous pouvez utiliser os.chdir ("gitflow") code>, mais je suis Je ne sais pas que c'est la solution la plus élégante.

>>> os.getcwd()
'C:\\Development\\gitflow'
>>> from conf.configmanager import ConfigManager
>>> c = ConfigManager()


4 commentaires

OSError: [Errno 2] Aucun fichier ou annuaire de ce type: 'Gitflow' Ugh, cela ne devrait pas être aussi difficile. Savez-vous de dire un didacticiel d'une page sur la façon d'utiliser cette chose?


Voici un petit tutoriel sur Os.chDir et ICI est un lien vers le module MODULE DOCS.


Je viens de faire un getcwd (voir Edition ci-dessus) ne ressemble-t-il pas mon problème, car je suis déjà dans le dossier Gitflow. Que pourrait faire cela d'autre? Mon dossier Gitflow est défini comme un dossier source, j'imagine que cela le met dans la version Pythons de ClassePath.


c'est étrange parce que cela ne fonctionne que pour moi si je fais un gitflow.conf.configmanager et qui visse la chose en place, car ConfigManager nécessite une importation dans le dossier de gitflow inférieur et que cela ne constate pas que si je modifie des exceptions d'importation pour importer gitflow.Exceptions qui Bien sûr, je ne peux pas faire parce que cela va briser le code lorsque je le distribue.



1
votes
  1. Paramètres de projet Open, puis "Structure du projet" File-> Paramètres-> Structure du projet

  2. Parcourez le répertoire que vous souhaitez agir en tant que chemin de base et attribuer-le à "Sources", Les importations et l'autosuggest commenceront à fonctionner conformément à votre exigence.


1 commentaires

Essayé qu'hier. Les dossiers de gitflow et les tests sont marqués comme des dossiers de source.



0
votes

Avez-vous essayé de marquer votre répertoire d'applications comme une racine source? Cliquez avec le bouton droit de la souris sur votre répertoire d'applications à Pycham et survolez dans le répertoire Marquer comme menu et choisissez racine source . Cela peut aider.


0 commentaires

3
votes

Après beaucoup de débogage, de lecture et d'apprentissage, j'ai constaté que mon problème était assez simple. La commande xxx

a répertorié tous les modules chargés par Python. Lors de la lecture de cette sortie, j'ai réalisé que Conf était un module répertorié dans un autre module chargé et que les exceptions de module sont utilisées par le python de base. Lorsque j'ai renommé Conf à Config et Exceptions à Flow_Exceptions Tout fonctionnait parfaitement.

Merci tout. Je vais laisser le problème susmentionné, espérons-le, mon processus de pensée dans le débogage, cela peut aider quelqu'un d'autre.


2 commentaires

Je dois attendre quelques heures de plus avant de me laisser


Cela m'a aidé aussi (mon module nommé de manière créative code ). G'wan - Offrez-vous une réponse acceptée. Vous avez donné une modeste de 26 386 heures pour que d'autres soient scintiles.



0
votes

Qu'est-ce qui semblait fonctionner pour moi est

import sys
sys.path.extend(['path/to/whatever'])


0 commentaires