Lancer un script python en mode 32 bits

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut !

J'ai un petit souci que je n'arrive pas à résoudre. Je code en python depuis peu et pour les besoins de mon script il faudrait qu'il s'exécute en mode 32 bits. Je suis sous Debian Jessie, architecture amd64.

Après quelques recherches je me rends compte que ce n'est pas si facile que je le pensais, en fait je ne sais pas si c'est possible surtout. Je me dis qu'il suffit d'installer le paquet python2.7:i386 … sauf qu'il rentre en conflit avec python2.7 et que pour l'installer je dois supprimer ce dernier sauf que ça me supprime aussi une bonne partie de mon système........ ^^

Alors question idiote (ou pas): y a t-il un moyen "simple" de préciser si un script python doit s'exécuter en 64 ou en 32 bits ? (avec gcc par exemple il suffit de préciser -m32 pour avoir un binaire en mode 32 bits, je m'attendais à quelque chose du genre en python sauf que là ça semble plus compliqué, bien plus compliqué :'( )

Merci d'avance ;-)

+0 -0

Euh je dis peut-être des conneries mais comme le problème de compatibilité viens de le version, prends en une différente (par exemple la 3.5) en 32 bit L'installation des deux versions différente ne pose pas de problème ça réglera peut-être ton problème Sinon j'ai trouver ca: http://stackoverflow.com/questions/3867131/how-to-build-32bit-python-2-6-on-64bit-linux

conseil: le thé est meilleur avec un zeste de citron

+0 -0
Staff

Ok. D'abord des explications pour éclaircir ton problème :

Python n'a pas de "mode 32 ou 64 bits". Ces considérations sur l'architecture de ton microprocesseur sont complètement abstraites par l'interpréteur. Il est évidemment impossible d'avoir un interpréteur compilé à la fois pour du x86 et du x86_64.

Par contre tu peux installer une version i386 de Python dans un virtualenv pour éviter de clasher avec la version par défaut de ton système.

Enfin par curiosité, d'où vient cette contrainte d'utiliser un interpréteur 32 bits ? Tu cherches à utiliser une bibliothèque dont tu ne possèdes que le binaire ?

I was a llama before it was cool

+0 -0
Auteur du sujet

Ok, bon c'est assez complexe au final… xD

En fait non, je veux simplement récupérer l'adresse d'une variable d’environnement pour la transmettre à un programme en C mais qui est lui compilé pour du 32 bits (il faut que l'adresse envoyée soit donc sur 4 octets et pas sur 8, et je parle de l'adresse et pas du contenu de la variable. Ca c'est mon autre problème :P ).

Je peux bien sur "hardcoder" cette adresse mais j'ai envie que ça soit un peu plus "automatique"

Édité par Que20

+0 -0

Tu peux envoyer des octets bruts, sur 4 octets :

1
2
3
import struct
addr = struct.pack('I', 837264)  # Renvoie un bytes
# envoyer addr

Mais c'est bizarre ton truc… Je ne suis pas certain de bien saisir.

Édité par Au

+0 -0
Staff

Ok, bon c'est assez complexe au final… xD

En fait non, je veux simplement récupérer l'adresse d'une variable d’environnement pour la transmettre à un programme en C mais qui est lui compilé pour du 32 bits (il faut que l'adresse envoyée soit donc sur 4 octets et pas sur 8, et je parle de l'adresse et pas du contenu de la variable. Ca c'est mon autre problème :P ).

Je peux bien sur "hardcoder" cette adresse mais j'ai envie que ça soit un peu plus "automatique"

Que20

Ouais, en gros c'est juste une question de calcul et de représentation du résultat. Le module struct fera parfaitement l'affaire. Il faut aussi savoir que les entiers en Python ne sont absolument pas soumis aux contraintes d'architecture : un int peut être indéfiniment grand, du moment que sa représentation tient dans ta RAM.

Édité par nohar

I was a llama before it was cool

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte