Le code suivant fait partie d'un solveur d'équations linéaires. Il est écrit pour python 3. Avant d'exécuter le programme, il vérifie le nombre magique de imp.get_magic()
par rapport à une valeur attendue.Python 3.5.0 donne un nombre magique inattendu
J'ai Python 3.5.0 installé sur un système exécutant Fedora 25. Le problème est que, sur mon système, j'ai une valeur différente pour le nombre magique.
attendu est: b'\xf8\x0c\r\n'
Au lieu de cela, je reçois: b'\x16\r\r\n'
Voici le code
def _get_module():
del globals()['_get_module']
import imp
import base64
import marshal
magic = imp.get_magic()
if magic == b'\xf8\x0c\r\n': # Python 3.5
pycData = <certain value>
pycData = base64.decodebytes(pycData)
Depuis que je reçois une valeur différente pour le nombre magique, je ne peux pas courir ce programme.
Ce code provient des ressources du livre Coding the Matrix. Il peut être trouvé sous la section "The Matrix" et le fichier est nommé solver.py
(téléchargements de fichiers directement).
Existe-t-il un moyen d'obtenir ce roulement?
Eh bien, ne pouvez-vous pas juste faire le conditionnel pour être vrai? Qu'est-ce que ce code est censé faire de toute façon? – user1685095
Oh boy, donc le script contient un bytecode intégré au nombre magique d'une version Python et le charge juste. Qu'est ce qui pourrait aller mal? –
@MartijnPieters A-t-il quelque chose à voir avec le système d'exploitation? – dpk