Suite

QGIS - Les erreurs Python ne sont pas signalées à la console Python


J'ai écrit un certain nombre de petits plugins à utiliser dans QGIS et j'ai trouvé qu'au cours du développement, les appels de traçage rapportant au plugin de la console python étaient très utiles.

J'utilise QGIS sur trois machines, mais j'ai constaté que maintenant sur deux d'entre elles, toutes les erreurs/traçages python passent par la boîte de dialogue d'erreur Python générique - cela ne se produit que s'il y a une erreur au démarrage du plugin sur la machine qui rapporte le retraçage vers la console python.

Est-ce que quelqu'un sait comment je peux rétablir le comportement sur la console python au lieu de la boîte de dialogue ?


Essayez de mettre :

sys.excepthook = sys.__excepthook__

au début de ton script


Mdhntd

L'intérieur d'un Bag of Holding est-il réellement un espace extradimensionnel ?

Faire un double nœud de sac poubelle

Est-il risqué de passer d'une large diversification géographique à un investissement majoritairement sur des marchés moins développés ?

Comment les germanophones décident-ils de ce qui doit être à gauche du verbe ?

Le professeur refuse d'écrire une lettre de recommandation aux étudiants qui n'ont pas rédigé de document de recherche avec lui

« Le travail acharné n'a jamais fait de mal à personne » Pourquoi ne pas « faire du mal » ?

FORMAT renvoie une taille de ligne et une taille de données importantes

Argument par défaut pour un foncteur dans un paramètre modélisé

Où sur Terre est-il le plus facile de survivre dans la nature sauvage ?

Comment rendre mon exercice à compléter plus évident ?

Quel est l'intérêt de cette macro ?

MOSFET cassé après avoir attaché la batterie de condensateurs

Pourquoi le Premier ministre britannique a-t-il besoin de l'autorisation du Parlement pour déclencher des élections générales ?

La soumission de la thèse après la vie est terrifiante - Aidez-moi !

« Le Hobbit » a-t-il déjà été abrégé ?

Quelle est la source de la peur dans l'effet Peur supplémentaire du sort Sanctuaire ?

Est-il possible d'observer des débris spatiaux avec des jumelles ?

Le langage et la pensée sont-ils la même chose ?

Quelle est l'excentricité d'une orbite (trajectoire) descendant tout droit vers le centre ?

Ne jamais rendre les membres publics virtuels/abstraits - vraiment ?

La jointure spatiale GeoPandas génère une erreur dans la console Python QGIS 3.8

Erreur Python pondérée par la distance inverse dans QGIS 2.0 Le plug-in QGIS QuickFinder génère des erreurs pythonObtention d'une erreur lors de l'importation de GeoPandas dans la console PythonDéboguer le plug-in QGIS3 avec Visual Studio Code

Je souhaite exécuter une jointure spatiale à l'aide de GeoPandas dans la console Python QGIS 3.8 comme ceci :

mais ça ne marche pas. Il affiche toujours l'erreur suivante :

Mais, si je l'exécute dans OSGeo4W Shell, il fonctionne correctement comme suit :

Quelle est la différence entre la console python dans l'application QGIS et dans OSGeo4W Shell ?
Et comment puis-je le réparer?

l'erreur est due à rtree et non à GeoPandas (Geopandas utilise rtree)

Mais, il fonctionne correctement lorsque j'essaie dans OSGEO4W Shell

Je souhaite exécuter une jointure spatiale à l'aide de GeoPandas dans la console Python QGIS 3.8 comme ceci :

mais ça ne marche pas. Il affiche toujours l'erreur suivante :

Mais, si je l'exécute dans OSGeo4W Shell, il fonctionne correctement comme suit :

Quelle est la différence entre la console python dans l'application QGIS et dans OSGeo4W Shell ?
Et comment puis-je le réparer?

l'erreur est due à rtree et non à GeoPandas (Geopandas utilise rtree)

Mais, il fonctionne correctement lorsque j'essaie dans OSGEO4W Shell

Je souhaite exécuter une jointure spatiale à l'aide de GeoPandas dans la console Python QGIS 3.8 comme ceci :

mais ça ne marche pas. Il affiche toujours l'erreur suivante :

Mais, si je l'exécute dans OSGeo4W Shell, il fonctionne correctement comme suit :

Quelle est la différence entre la console python dans l'application QGIS et dans OSGeo4W Shell ?
Et comment puis-je le réparer?

Je souhaite exécuter une jointure spatiale à l'aide de GeoPandas dans la console Python QGIS 3.8 comme ceci :

mais ça ne marche pas. Il affiche toujours l'erreur suivante :

Mais, si je l'exécute dans OSGeo4W Shell, il fonctionne correctement comme suit :

Quelle est la différence entre la console python dans l'application QGIS et dans OSGeo4W Shell ?
Et comment puis-je le réparer?


Tic Tac Toe basé sur du texte Python

Avoir une classe pour joueur semble trop compliqué. Un simple nametuple suffirait.

La fonction main() fait le gros du travail. Vous pouvez avoir une classe Game, qui prend la liste des joueurs (ou des objets individuels) comme paramètres d'initialisation, puis implémente la logique du jeu.

Vous pouvez réutiliser le get_player_input lorsque vous demandez un autre jeu de l'utilisateur.

Lorsque vous travaillez avec une bibliothèque aléatoire, il est généralement recommandé de la semer au début.

La Board.display cam est une 1 ligne :

Au lieu d'avoir une méthode Board.display, remplacez __str__ et simplement print(board) .

Implémentation alternative de is_full :

Vous avez manqué une opportunité OO.

Vous disposez d'une classe Player mais vous "activez toujours les données internes". Tu fais cela:

ce qui n'est pas une méthode sur Player . Et plus tard, tu fais ceci :

Cet acte d'écriture si player.is_human : . autre: . est "activer les données internes". Ce sont des "données internes" car vous ne les obtenez pas de l'extérieur de la classe. C'est "commuter" parce que vous faites un choix exclusif.

L'activation des données internes est une "odeur de code" qui indique que vous pourriez avoir besoin d'une nouvelle classe. Dans ce cas, je pense que vous faites :

Je suggérerai que le constructeur IO prenne les flux d'entrée et de sortie, et gère l'affichage du tableau et l'invite pour un nouveau mouvement.

Je vous suggérerai également d'écrire une classe TextIO quelconque et de lui donner des méthodes telles que "prompt for input" et "read a string" et "read an integer". Cet ensemble d'opérations de base peut constituer les blocs de construction de votre classe PlayerIO et permettra de créer un objet fictif pour les tests unitaires.


2 réponses 2

1. Réviser

Il n'est pas recommandé d'utiliser l'espace de noms std - le problème est que cela importe tous les identifiants de std , et certains d'entre eux peuvent masquer les noms d'autres modules que vous devez utiliser. Voir cette question sur Stack Overflow.

Le code ne vérifie pas le succès/l'échec de la plupart des fonctions qu'il appelle. Ceux-ci peuvent tous échouer :

(et peut-être d'autres que je n'ai pas repérés).

Il n'y a pas de Py_DECREF pour pArgs .

Il serait possible d'éviter de construire le tuple d'argument, en utilisant PyObject_CallFunctionObjArgs au lieu de PyObject_CallObject .

Les messages d'erreur doivent être écrits sur l'erreur standard ( cerr ), et non sur la sortie standard.

Il est plus clair d'utiliser les macros EXIT_SUCCESS et EXIT_FAILURE de <cstdlib> au lieu de 0 et 1 .

Le code appelle PyArray_NDIM et PyArray_SHAPE sur np_ret sans vérifier si cet objet est en fait un tableau. Appelez PyArray_Check en premier.

L'utilisation de l'initialisation de valeur pour les variables int me semble perverse. Avec int i<> vous devez vous rappeler que le constructeur par défaut donne à la variable la valeur 0. Avec int i = 0 il n'y a pas besoin de se souvenir (et le code n'est pas moins efficace : le code compilé ne crée pas réellement un 0 temporaire objet, puis appelez le constructeur d'affectation int).

Ce code ne fournit pas autant d'informations sur les erreurs qu'il le pourrait. En particulier, les erreurs à l'intérieur de Python amènent Python à créer un objet d'exception contenant des informations sur l'erreur (voir « Gestion des exceptions »). Ce serait une bonne idée d'imprimer cet objet s'il existe, en vérifiant PyErr_Occurred puis en appelant PyErr_Print .

Chaque bloc de code de gestion des erreurs doit annuler l'effet de tous les blocs de code réussis précédents. Cela rend la longueur de la fonction quadratique dans le nombre de cas d'erreur ! C'est risqué, car chaque fois que vous modifiez quelque chose, vous devez ajuster tous les cas d'erreur en conséquence, et il est très facile d'oublier (comme au §1.3 ci-dessus). De plus, la difficulté d'écrire tout le code de gestion des erreurs rend tentant d'ignorer la gestion des erreurs pour les fonctions qui, selon vous, sont susceptibles de réussir (comme au §1.2 ci-dessus).

Consultez le code révisé ci-dessous pour savoir comment faire en sorte que chaque opération "d'annulation" n'apparaisse qu'une seule fois.


Certains de nos clients

Grandit vite !

Nous cherchons à étendre notre présence aux États-Unis!

En tant que Business Development Manager, vous devrez :

  • développer ses activités aux États-Unis
  • recruter des talents locaux (commerciaux, agents, formateurs, consultants)
  • recruter des formateurs et consultants locaux

Nous offrons:

  • Des systèmes d'intelligence artificielle et de Big Data pour soutenir votre opération locale
  • automatisation de haute technologie
  • catalogue et contenu de cours continuellement mis à jour
  • bon amusement dans l'équipe internationale

Si vous êtes intéressé à gérer une entreprise de formation et de conseil de haute technologie et de haute qualité.


Chaque collection a un enfant (collection) biens. Facile à comprendre à l'aide de la console python :

Pour obtenir le premier niveau de toutes les sous-collections, vous pouvez simplement parcourir la liste :

Pour ajouter une nouvelle collection, créez un nouveau bloc de données, puis utilisez la méthode .link(collection) pour l'ajouter à votre principale la collecte est :

Le même principe s'applique à toutes les collections, peu importe que la collection soit au premier niveau ou à tout autre niveau. Exemple sur la façon d'ajouter un nouveau (sous-)collection à la actif collection:

Vous pouvez également spécifier chaque collection par son nom C.scene.collection.children["Collection"] ou vous pouvez même utiliser l'opérateur d'index C.scene.collection.children[0] mais c'est sujet aux erreurs. Si le nom de la collection ou la hiérarchie des scènes change, vous êtes perdu. Une meilleure pratique consiste à utiliser la méthode pythons get() pour effectuer une recherche de la collection en premier lieu :

Avancée exemple sur la façon d'ajouter une nouvelle collection à une collection arbitraire dans la scène à l'aide d'une boucle récursive basée sur https://blender.stackexchange.com/a/137866 :

Notez que vous ajoutez objets à la ou aux collections de la même manière en passant simplement un objet lors de l'appel de la méthode .link(object) sur l'objet réel (collection) propriété, qui est en fait assez agréable et pratique:


Objets FTP¶

Plusieurs méthodes sont disponibles en deux versions : une pour la gestion des fichiers texte et une autre pour les fichiers binaires. Ceux-ci sont nommés pour la commande qui est utilisée suivi de lignes pour la version texte ou binaire pour la version binaire.

Les instances FTP ont les méthodes suivantes :

FTP. set_debuglevel ( niveau ) ¶

Définissez le niveau de débogage de l'instance. Cela contrôle la quantité de sortie de débogage imprimée. La valeur par défaut, 0 , ne produit aucune sortie de débogage. Une valeur de 1 produit une quantité modérée de sortie de débogage, généralement une seule ligne par requête. Une valeur de 2 ou plus produit la quantité maximale de sortie de débogage, en enregistrant chaque ligne envoyée et reçue sur la connexion de contrôle.

FTP. relier ( hôte='', port=0, timeout=Aucun, source_address=Aucun ) ¶

Connectez-vous à l'hôte et au port donnés. Le numéro de port par défaut est 21 , comme spécifié par la spécification du protocole FTP. Il est rarement nécessaire de spécifier un numéro de port différent. Cette fonction ne doit être appelée qu'une seule fois pour chaque instance, elle ne doit pas être appelée du tout si un hôte a été donné lors de la création de l'instance. Toutes les autres méthodes ne peuvent être utilisées qu'une fois la connexion établie. L'optionnel temps libre Le paramètre spécifie un délai d'attente en secondes pour la tentative de connexion. Sinon temps libre est passé, le paramètre de délai d'attente par défaut global sera utilisé. adresse_source est un 2-tuple (hôte, port) auquel le socket doit se lier comme adresse source avant de se connecter.

Déclenche un événement d'audit ftplib.connect avec les arguments self , host , port .

Modifié dans la version 3.3 : adresse_source paramètre a été ajouté.

Renvoie le message de bienvenue envoyé par le serveur en réponse à la connexion initiale. (Ce message contient parfois des clauses de non-responsabilité ou des informations d'aide pouvant être pertinentes pour l'utilisateur.)

Connectez-vous en tant que donné utilisateur. Le mot de passe et compte les paramètres sont facultatifs et par défaut la chaîne vide. Sinon utilisateur est spécifié, sa valeur par défaut est 'anonymous' . Si utilisateur est 'anonyme' , la valeur par défaut mot de passe est 'anonyme@' . Cette fonction ne doit être appelée qu'une seule fois pour chaque instance, une fois qu'une connexion a été établie, elle ne doit pas être appelée du tout si un hôte et un utilisateur ont été fournis lors de la création de l'instance. La plupart des commandes FTP ne sont autorisées qu'une fois que le client s'est connecté. compte paramètre fournit des « informations comptables » peu de systèmes implémentent cela.

Abandonnez un transfert de fichiers en cours. L'utiliser ne fonctionne pas toujours, mais cela vaut la peine d'essayer.

Envoyez une chaîne de commande simple au serveur et renvoyez la chaîne de réponse.

Déclenche un événement d'audit ftplib.sendcmd avec les arguments self , cmd .

Envoyez une simple chaîne de commande au serveur et gérez la réponse. Ne renvoie rien si un code de réponse correspondant au succès (codes compris entre 200 et 299) est reçu. Levez error_reply sinon.

Déclenche un événement d'audit ftplib.sendcmd avec les arguments self , cmd .

FTP. retrbinaire ( cmd, rappeler, taille de bloc=8192, reste=Aucun ) ¶

Récupérer un fichier en mode de transfert binaire. cmd devrait être une commande RETR appropriée : 'RETR filename' . Le rappeler La fonction est appelée pour chaque bloc de données reçu, avec un seul argument d'octet donnant le bloc de données. L'optionnel taille de bloc L'argument spécifie la taille maximale du morceau à lire sur l'objet socket de bas niveau créé pour effectuer le transfert réel (qui sera également la plus grande taille des blocs de données transmis à rappeler). Une valeur par défaut raisonnable est choisie. du repos signifie la même chose que dans la méthode transfercmd().

FTP. lignes de retour ( cmd, rappel=Aucun ) ¶

Récupérer une liste de fichiers ou de répertoires dans l'encodage spécifié par le codage paramètre à l'initialisation. cmd devrait être une commande RETR appropriée (voir retrbinary() ) ou une commande telle que LIST ou NLST (généralement juste la chaîne 'LIST' ). LIST récupère une liste de fichiers et des informations sur ces fichiers. NLST récupère une liste de noms de fichiers. Le rappeler La fonction est appelée pour chaque ligne avec un argument de chaîne contenant la ligne avec le CRLF de fin supprimé. Le défaut rappeler imprime la ligne dans sys.stdout .

Activez le mode « passif » si val est vrai, sinon désactivez le mode passif. Le mode passif est activé par défaut.

FTP. storbinaire ( cmd, fp, taille de bloc=8192, rappel=Aucun, reste=Aucun ) ¶

Stocker un fichier en mode de transfert binaire. cmd doit être une commande STOR appropriée : "STOR filename" . fp est un objet fichier (ouvert en mode binaire) qui est lu jusqu'à EOF en utilisant sa méthode read() en blocs de taille taille de bloc pour fournir les données à stocker. Le taille de bloc l'argument par défaut est 8192. rappeler est un paramètre unique facultatif appelable qui est appelé sur chaque bloc de données après son envoi. du repos signifie la même chose que dans la méthode transfercmd().

Modifié dans la version 3.2 : du repos paramètre ajouté.

Stocker un fichier en mode ligne. cmd devrait être une commande STOR appropriée (voir storbinary() ). Les lignes sont lues jusqu'à EOF à partir de l'objet fichier fp (ouvert en mode binaire) en utilisant sa méthode readline() pour fournir les données à stocker. rappeler est un paramètre unique facultatif appelable qui est appelé sur chaque ligne après son envoi.

FTP. transfercmd ( cmd, reste=Aucun ) ¶

Lancez un transfert via la connexion de données. Si le transfert est actif, envoyez une commande EPRT ou PORT et la commande de transfert spécifiée par cmd, et acceptez la connexion. Si le serveur est passif, envoyez une commande EPSV ou PASV, connectez-vous dessus et lancez la commande de transfert. Dans tous les cas, renvoyez le socket pour la connexion.

Si facultatif du repos est donné, une commande REST est envoyée au serveur, en passant du repos comme argument. du repos est généralement un décalage d'octet dans le fichier demandé, indiquant au serveur de recommencer à envoyer les octets du fichier au décalage demandé, en sautant les octets initiaux. Notez cependant que la méthode transfercmd() convertit du repos à une chaîne avec le codage paramètre spécifié à l'initialisation, mais aucune vérification n'est effectuée sur le contenu de la chaîne. Si le serveur ne reconnaît pas la commande REST, une exception error_reply sera levée. Si cela se produit, appelez simplement transfercmd() sans du repos argument.

FTP. ntransfercmd ( cmd, reste=Aucun ) ¶

Comme transfercmd() , mais renvoie un tuple de la connexion de données et la taille attendue des données. Si la taille attendue n'a pas pu être calculée, None sera renvoyé comme taille attendue. cmd et du repos signifie la même chose que dans transfercmd() .

Répertoriez un répertoire dans un format standardisé à l'aide de la commande MLSD ( RFC 3659). Si chemin est omis, le répertoire courant est supposé. les faits est une liste de chaînes représentant le type d'information souhaité (par exemple ["type", "size", "perm"] ). Renvoie un objet générateur produisant un tuple de deux éléments pour chaque fichier trouvé dans path. Le premier élément est le nom du fichier, le second est un dictionnaire contenant des faits sur le nom du fichier. Le contenu de ce dictionnaire peut être limité par le les faits argument, mais le serveur n'est pas garanti de retourner tous les faits demandés.

Renvoie une liste de noms de fichiers tels que renvoyés par la commande NLST. L'optionnel argument est un répertoire à lister (la valeur par défaut est le répertoire actuel du serveur). Plusieurs arguments peuvent être utilisés pour transmettre des options non standard à la commande NLST.

Si votre serveur prend en charge la commande, mlsd() offre une meilleure API.

Produire une liste de répertoires telle que renvoyée par la commande LIST, en l'imprimant sur la sortie standard. L'optionnel argument est un répertoire à lister (la valeur par défaut est le répertoire actuel du serveur). Plusieurs arguments peuvent être utilisés pour transmettre des options non standard à la commande LIST. Si le dernier argument est une fonction, il est utilisé comme un rappeler fonction comme pour retrlines(), la valeur par défaut est imprimée sur sys.stdout . Cette méthode renvoie None .

Si votre serveur prend en charge la commande, mlsd() offre une meilleure API.

Renommer le fichier denom sur le serveur pour nommer.

Supprimer le fichier nommé nom de fichier du serveur. En cas de succès, renvoie le texte de la réponse, sinon lève error_perm sur les erreurs d'autorisation ou error_reply sur d'autres erreurs.

Définit le répertoire courant sur le serveur.

Créez un nouveau répertoire sur le serveur.

Renvoie le chemin du répertoire courant sur le serveur.

Supprimer le répertoire nommé dirname sur le serveur.

Demander la taille du fichier nommé nom de fichier sur le serveur. En cas de succès, la taille du fichier est renvoyée sous forme d'entier, sinon Aucun n'est renvoyé. Notez que la commande SIZE n'est pas standardisée, mais est prise en charge par de nombreuses implémentations de serveur courantes.

Envoyez une commande QUIT au serveur et fermez la connexion. C'est la manière « polie » de fermer une connexion, mais elle peut déclencher une exception si le serveur répond par une erreur à la commande QUIT. Cela implique un appel à la méthode close() qui rend l'instance FTP inutile pour les appels suivants (voir ci-dessous).

Fermez la connexion unilatéralement. Cela ne doit pas être appliqué à une connexion déjà fermée, comme après un appel réussi à quit() . Après cet appel, l'instance FTP ne doit plus être utilisée (après un appel à close() ou quit(), vous ne pouvez pas rouvrir la connexion en émettant une autre méthode login()).


Assurez-vous que vous avez vraiment besoin d'exécuter votre tâche à plusieurs reprises. C'est ce qu'on appelle l'attente occupée et presque toujours sous-optimale. Si votre tâche vérifie la sortie d'un sous-processus, vous pouvez simplement subprocess.wait() pour qu'il se termine, par exemple. Si votre tâche consiste à attendre qu'un fichier ou un répertoire du système de fichiers soit touché, vous pouvez utiliser pyinotify pour déclencher votre code à partir de l'événement du système de fichiers géré par le noyau.

C'est ainsi que vous écrivez une boucle infinie pour une attente occupée sans consommer trop de CPU.


Bien que la réinstallation d'Ubuntu soit probablement le moyen le plus simple, il convient de souligner qu'il est possible de récupérer sans tout réinstaller.

Pour ce faire, téléchargez manuellement le package python2.7 (et ses dépendances) et installez-les manuellement à l'aide de dpkg (en contournant APT, qui nécessite Python). Une fois installé, apt devrait fonctionner à nouveau, et donc apt-get install ubuntu-desktop restaurera votre système. (Si apt-get ne fonctionne toujours pas, vous devrez peut-être également télécharger et installer les dépendances manquantes.)

À l'avenir, si vous devez réinstaller un package, utilisez plutôt

qui réinstalle le package sans avoir à supprimer les dépendances.

Supprimer Python n'est pas une bonne idée car une grande partie d'Ubuntu en dépend. Vous avez peut-être vu un avertissement vous indiquant quels packages dépendent de python et seront donc supprimés avec Python. En procédant, vous vous retrouvez avec un système d'exploitation assez dépouillé.

La réinstallation d'Ubuntu serait désormais le moyen le plus simple et le plus sûr de le récupérer. Veillez à ne pas supprimer votre HOME lorsque vous le faites.

S'il n'est trop tard pour personne, ou si vous avez rencontré ce problème récemment, voici comment je l'ai fait fonctionner :

J'ai suivi les conseils de Mechanical Snail et téléchargé tous les packages à l'aide de Synaptic. J'ai sélectionné tous les packages pertinents, essentiellement tout ce qui contenait "python", "python2", "python3", "apt", "python-apt", etc., qui était déjà installé sur mon ordinateur, les a marqués pour réinstallation, et quand je frappe appliquer, je me suis assuré de ne les télécharger que.

Ensuite, sous root, je suis allé dans le dossier /var/cache/apt/archives et j'ai exécuté la commande suivante pour réinstaller manuellement tout ce que j'ai téléchargé (vous verrez tous les packages que vous avez téléchargés avec Synaptic ici):

Quoi qu'il en soit, je recevais cette erreur apt_pkg chaque fois que je recevais un message d'erreur d'un script Python dans Aptana, et hier lorsque j'essayais d'ajouter un dépôt. Maintenant, au moins, je peux ajouter le référentiel sans problème, mais je reçois toujours l'erreur apt_pkg chaque fois qu'il y a une erreur dans mes scripts Python.

Exécuter le script en dehors d'Aptana en appelant python3.2 ou python3 qui pointe vers 3.2 fonctionne (ce qui signifie que j'obtiens l'erreur du script sans l'erreur apt_pkg), mais si je l'exécute avec python3.3, l'erreur est de retour.


`jupyter notebook` renvoie l'erreur `jupyter` n'est pas reconnue dans cmd win 10

J'utilise un python 3.8 dans un régime hors ligne. À savoir, si j'ai besoin d'un package à installer, je vais télécharger ce package.whl ou package.tar.gz et l'installer à l'aide de pip install package.whl . Une fois, j'ai voulu installer jupyter notebook et cela a nécessité l'installation de plusieurs autres packages. J'ai patiemment installé tout ce qui était nécessaire. Au final, j'ai la trace suivante :

J'ai pensé "maintenant ça va marcher" mais je me suis trompé, la commande jupyter notebook dans le terminal a lancé: 'jupyter' n'est pas reconnu comme une commande interne ou externe, un programme opérationnel ou un fichier batch.

En essayant de trouver une solution, j'ai cherché sur Google et j'ai appris que je devais utiliser Anaconda ou avoir jupyter.exe dans mon C:py38Scripts path (et ce chemin exact doit être ajouté dans les variables système). Mais je n'ai pas jupyter.exe là-bas, mais j'ai déjà ajouté C:py38Scripts à l'endroit susmentionné. Je ne suis pas prêt à utiliser Anaconda (c'est une autre histoire) et pour la dernière partie, il y a ces fichiers dans le dossier :

J'ai essayé de redémarrer le PC mais en vain.

Quelqu'un pourrait-il aider avec ça? Merci

Éditer: Je ne sais pas ce que jupyter-notebook est censé faire, mais lorsque je le tape dans le cmd, il lance ce qui suit :


Voir la vidéo: How to create Grid in ArcGIS with required Dimension (Octobre 2021).