Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'ouverture du fichier main.py.

Leçon importez des packages Python.

    28 janvier 2024 à 16:11:41

    Bonjour à tous,

    Je suis le cours "Apprenez les bases du langage Python" et je voudrais, comme dans la démonstration sur le screencast de la leçon "Importez des packages Python", afficher le résultat de main.py.

    J'ai bien enregistré ensemble mes 3 fichiers (opérations.py; __init__.py; main.py) dans un dossier que j'ai nommé "calculator". J'ai également vérifié l'indentation. Je précise que j'utilise Cygwin 64 Terminal et que, pour afficher le résultat de main.py sur mon cmd, j'ai envoyé la requête

    python3 main.py

    Le message d'erreur qui s'affiche sur mon terminal est le suivant :

    >>> python3 main.py
      File "<stdin>", line 1
        python3 main.py
                ^^^^
    SyntaxError: invalid syntax

    Qu'est-ce que j'ai oublié ou bien qu'ai peut-être mal fait?

    Merci.

    -
    Edité par DelphineGi 28 janvier 2024 à 16:33:44

    • Partager sur Facebook
    • Partager sur Twitter
      28 janvier 2024 à 16:16:25

      Ajoutez l'instruction print ('coucou') en première ligne de main.py. Si la commande "python3 main.py" affiche "coucou", c'est que le script n'affiche rien (ou n'arrive pas aux instructions qui affichent quelque chose). Dans ce cas, sans poster les scripts pour voir ce que vous y avez écrit, il serait difficile d'en dire plus.
      • Partager sur Facebook
      • Partager sur Twitter
        28 janvier 2024 à 16:45:27

        L'ajout de l'instruction print('coucou') ne change pas le message d'erreur...

        Mon dossier "calculator" contient les 3 fichiers suivants :

        • Mon fichier operations.py contient :
        def sum (left_param, right_param):
            return left_param + right_param
        def substraction (left_param, right_param):
            return left_param - right_param
        def multiplication (left_param, right_param):
            return left_param * right_param
        def division (left_param, right_param):
            try:
                return left_param / right_param
            except ZeroDivisionError:
                print ("Erreur : Division par zéro!")
        • Mon fichier __init__.py ne contient rien.
        • Mon fichier main.py contient :
        import calculator.operations
        
        if __name__ == '__main__':
            resultat = calculator.operations.sum(10, 30)
            print(resultat)


        Je me demande si Cygwin pourrait être la cause de mon problème... o_O

        -
        Edité par DelphineGi 28 janvier 2024 à 17:06:57

        • Partager sur Facebook
        • Partager sur Twitter
          28 janvier 2024 à 18:08:08

          Salut,

          >>> python3 main.py

          Les 3 chevrons indiquent que tu es dans l'interpréteur Python, il faut lancer la commande directement dans cmd et en précisant le chemin de ton fichier main.py

          -
          Edité par Garkam 28 janvier 2024 à 18:08:44

          • Partager sur Facebook
          • Partager sur Twitter
            28 janvier 2024 à 18:37:51

            DelphineGi a écrit:

            L'ajout de l'instruction print('coucou') ne change pas le message d'erreur...

            Dans le message original vous ne mentionniez pas de message d'erreur.

            DelphineGi a écrit:

            Je me demande si Cygwin pourrait être la cause de mon problème... o_O

            A priori non mais quel est l'intérêt d'empiler des environnements sans les maîtriser pour se poser des questions auxquelles personne ne pourra répondre: on ne sait pas comment a été installé tout çà, encore moins si ça a été fait correctement et on ne peut rien vérifier.

            • Partager sur Facebook
            • Partager sur Twitter
              28 janvier 2024 à 18:59:42

              Ça n'a rien a voir avec Cygwin64. Il est sur mon ordi et ça marche.

              Il semble y avoir confusion. parfois il est question de cmd, et parfois il est question de Cygwin.

              Où exécutes-tu ton code?

              De toute évidence, tu appelles python sans paramètre et tu fais python avec paramètre à l'intérieur de l'invite de Python (>>> ).

              Appelles "directement" Python sur l'invite de cmd ou celle de Cygwin "avec" le nom du fichier.

              Où sont enregistrés ton dossier et tes fichiers? Dans Cygwin, ou dans Windows accessible facilement par cmd?

              -
              Edité par PierrotLeFou 28 janvier 2024 à 19:05:23

              • Partager sur Facebook
              • Partager sur Twitter

              Le Tout est souvent plus grand que la somme de ses parties.

                29 janvier 2024 à 10:02:23

                Bonjour,

                Tout n'est pas encore très clair pour moi. Je vais essayer de détailler tout ce que j'ai fait jusque là:

                J'écris le fichier sur Visual Studio Code.

                J'utilise Cygwin64 Terminal car c'est l'outil qui est utilisé dans le cours "Apprenez à utiliser la ligne de commandes dans un terminal".

                Lorsque j'utilise python avec Cygwin, j'arrive à afficher "coucou", mais il est suivi du message suivant :

                >>> import main.py
                coucou
                Traceback (most recent call last):
                  File "<stdin>", line 1, in <module>
                  File "C:\cygwin64\home\my_username\Openclassroom\calculator\main.py", line 3, in <module>
                    import calculator.operations
                ModuleNotFoundError: No module named 'calculator'
                


                Si je lance la commande sur Cygwin (donc si je n'utilise pas python), j'ai le message suivant :

                $ python3 main.py
                Python was not found; run without arguments to install from the Microsoft Store, or disable this shortcut from Settings > Manage App Execution Aliases.
                

                Mon dossier "calculator" est enregistré dans C:/cygwin64/home/my_username/Openclassroom/calculator

                Mon fichier python.exe est enregistré dans C:/Users/my_username/AppData/Local/Programs/Python/Python312

                Je ne sais pas comment je peux indiquer à cygwin le chemin vers python (comment créer une variable d'environnement?), ou alors si je peux installer python une deuxième fois dans cygwin.

                -
                Edité par DelphineGi 29 janvier 2024 à 14:09:11

                • Partager sur Facebook
                • Partager sur Twitter
                  29 janvier 2024 à 14:53:45

                  python3 est la version de Python de Microsoft.

                  Tu as bien installé Python 3.12 dans AppData.

                  Pourquoi ne fais-tu pas  python main.py  au lieu de python3 main.py ?

                  Ensuite, tu fais  import calculator.operations  alors que tu es déjà dans le dossier calculator

                  si j'ai bien compris.

                  Fais seulement import operations dans main.py

                  Si tu veux savoir ce qui est accessible sur Cygwin fais:

                  which python

                  which python3

                  Dans Cygwin.

                  Si python n'est pas dans Cygwin, vas dans Cygwin, ouvres le fichier ".bashrc"

                  Vérifies en faisant  ls -a pour voir si .bashrc est bien là.

                  Ajoutes à la fin:

                  PATH=$PATH:C:/Users/my_username/AppData/Local/Programs/Python/Python312

                  Après la modification, fermes le fichier, sort de Cygwin, et entres à nouveau pour que la correction soit effective.

                  J'espère que tu connais suffisamment les commandes de Cygwin. Sinon, tu n'es pas sortie du bois ...

                  -
                  Edité par PierrotLeFou 29 janvier 2024 à 15:48:43

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Le Tout est souvent plus grand que la somme de ses parties.

                    29 janvier 2024 à 16:08:01

                    Ok. J'ai compris mes erreurs. Merci. Pourquoi est-il préférable d'enregistrer le PATH directement dans le fichier .bashrc plutôt qu'en l'ajoutant aux variables d'environnement des propriétés système? Je suppose qu'en ajoutant le PATH directement dans le fichier, celui-ci devient prioritaire.

                    -
                    Edité par DelphineGi 29 janvier 2024 à 18:02:17

                    • Partager sur Facebook
                    • Partager sur Twitter
                      29 janvier 2024 à 17:56:42

                      Quand on installe Python sur Windows, il est inclus dans le  path  de Windows, mais pas forcément dans le PATH de Cygwin.

                      Tu peux essayer sous cmd:

                      echo %path%

                      et sur Cygwin:

                      echo $PATH

                      pour savoir ce qui est inclus sur chaque système.

                      -
                      Edité par PierrotLeFou 29 janvier 2024 à 17:59:17

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Le Tout est souvent plus grand que la somme de ses parties.

                      Problème d'ouverture du fichier main.py.

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      • Editeur
                      • Markdown