Une histoire sur la modification de Python et l'ajout de fonctions

"Explorer des logiciels à grande échelle" est une expérience sélectionnable pour le Département de génie de l'information électronique / Département de génie électrique et électronique (eeic), Faculté de génie, Université de Tokyo. Il s'agit d'une amélioration / extension d'un programme à grande échelle publié en tant que OSS (Open Source Software), et il est difficile de saisir le tableau d'ensemble, qui ne peut pas être touché par un programme à petite échelle qui est généralement géré en classe. Il s'agit d'apprendre à gérer les programmes. Nous avons décidé d'explorer Python, que nous connaissons en classe.

Lien

environnement

Préparation

Commencez par créer un répertoire de travail (ici ~ / cpython). Dupliquez le référentiel de Python3.10 (cpython) sur Github en utilisant git clone.

terminal


$ mkdir cpython
$ cd cpython
$ git clone https://github.com/python/cpython

Construire

Créez un Makefile avec configure. À ce stade, utilisez l'option --prefix pour enfin décider où placer le programme (ici ~ / python-install). Vous pouvez également ajouter «-O0» à la variable d'environnement «CFLAGS» pour abaisser le niveau d'optimisation, et ajouter «-g» pour inclure le «symbole de débogage» dans le fichier exécutable. Cela vous permet d'utiliser gdb pour suivre le comportement de votre programme ligne par ligne.

Une fois que vous avez créé un Makefile avec configure, compilez-le et installez-le avec make et make install.

terminal


$ CFLAGS="-g -O0" ./configure --prefix=/home/[username]/python-install/
$ make 
$ make install

Ceci termine la construction et vous pouvez démarrer python en exécutant ~ / python-install / bin / python3. Si vous changez le code, vous devez faire «make clean» puis «make».

Suivre avec le débogueur

Démarrez Emacs et allez dans ~ / python-install / bin / avec la commande M-x shell. Une fois que j'ai pu le déplacer, j'ai appuyé sur M-x gud-gdb et gdb --fullname python3 pour démarrer gdb et l'ai utilisé pour suivre le programme.

Matériel de référence

** Exploration de logiciels à grande échelle **

** Documentation CPython officielle (Modification de la grammaire de CPython) ** ** Documentation CPython officielle (Conception du compilateur de CPython) **

** Document officiel GNU readline **

--Ce document est référencé dans Ajout de la fonction d'indentation automatique à Python.

** Introduction à la modification de Python **

-Ceci est un article du senior d'EEIC qui a ajouté la déclaration sauf à Python. Lors de la modification de Python, j'ai mentionné par quoi commencer.

Recommended Posts

Une histoire sur la modification de Python et l'ajout de fonctions
Une histoire sur Python pop and append
À propos de Python dict et des fonctions triées
Une histoire sur l'ajout d'une API REST à un démon créé avec Python
Un programmeur Java a étudié Python. (À propos des fonctions (méthodes))
[Python] Mémo sur les fonctions
Une histoire accro aux variables globales et à la portée de Go
Une histoire sur l'exécution de Python sur PHP sur Heroku
L'histoire de la création d'une partition de type Hanon avec Python
Une histoire d'essayer un monorepo (Golang +) Python avec Bazel
Histoire autour de la maternelle, de l'école maternelle, du jardin d'enfants
À propos de la création et de la modification de thèmes personnalisés pour Python IDLE
À propos des objets et des classes Python
À propos des variables et des objets Python
À propos de Python, len () et randint ()
À propos de la date et du fuseau horaire Python
Mémorandum sur la corrélation [Python]
Un mémorandum sur le simulacre de Python
À propos de Python et des expressions régulières
Fonctions de tri et de comparaison Python 3
À propos des opérations Python et OS
Fonctions d'ordre supérieur et notation d'inclusion en Python
Python # À propos de la référence et de la copie
À propos de Python sort () et reverse ()
Une note sur [python] __debug__
Une histoire sur la façon de spécifier un chemin relatif en python.
Une histoire sur un amateur faisant une rupture de bloc avec python (kivy) ②
Une histoire sur un amateur faisant une rupture de bloc avec python (kivy) ①
Une histoire sur la tentative d'implémentation de variables privées en Python.
Une histoire à propos d'un débutant en python coincé avec aucun module nommé'ttp.server '
Python a + = b et a = a + b sont différents
L'histoire de Python et l'histoire de NaN
À propos de l'installation des séries Pwntools et Python2
[python] Gérer les fonctions dans une liste
Une histoire rafraîchissante sur Slice en Python
Python: une note sur les classes 1 "Résumé"
Une histoire de mauvaise humeur sur Slice en Python
À propos de Python et Cython dtype
À propos de Python Pickle (cPickle) et Marshal
[Python] À propos des classes Executor et Future
À propos de Python, à partir et à l'importation, comme
L'histoire de l'utilisation de la réduction de Python
Histoire d'erreur étrange et horrible de Python
Une note sur mock (bibliothèque fictive Python)
Un peu plus sur les références ~ Prenant Python et Java comme exemples ~
Une histoire sur le développement d'un type logiciel avec Firestore + Python + OpenAPI + Typescript
Une histoire sur tout, de la collecte de données au développement d'IA et à la publication d'applications Web en Python (3. développement d'IA)
Une histoire d'essayer d'exécuter JavaScripthon sur Windows et d'abandonner.
Une histoire sur un remodelage magique qui met Lubuntu dans un Chromebook
Une histoire reliant Slack et la feuille de calcul Google
Une histoire sur l'automatisation du mahjong en ligne (Jakutama) avec OpenCV et l'apprentissage automatique
Une histoire sur ma nouvelle étude de Python après 3 ans d'expérience MATLAB
Un programmeur Java a étudié Python. (À propos du type)
Une histoire sur l'apprentissage automatique avec Kyasuket
Un mémo contenant Python2.7 et Python3 dans CentOS
Connectez beaucoup de Python ou et et
Fonctions Python
L'histoire de l'abandon d'essayer de se connecter à MySQL en utilisant Heroku