[Python] Sapete come lanciare l'esecuzione di uno script python3.4 dallo script python 2.76?

Marco Ippolito ippolito.marco a gmail.com
Ven 26 Set 2014 13:09:06 CEST


grazie Andrea e grazie Manlio del vosto aiuto

nel file b.py (quello scritto in python 2.76) ho messo:

#/usr/bin/python

# giusto per avere un risultato qualsiasi in python 2.76
a = 2
b = 3
somma = a + b
print "somma = ", somma

import subprocess
p = subprocess.call(["python3.4",
"/home/ubuntu/ggc/prove/sole24ore/asyncioUse_5.py"])
print p

time python py34Activation.py
somma =  5
Traceback (most recent call last):
  File "/home/ubuntu/ggc/prove/sole24ore/asyncioUse_5.py", line 4, in <module>
    import aiohttp
ImportError: No module named 'aiohttp'
1

mi dice che non c'è il modulo aiohttp
ma questo perchè ho installato il package aiohttp solo per python3.4
mentre non c'è in python 2.76
non è che devo prima attivare il virtualenv in cui si trova python3.4?
se così fosse, si dovrebbe seguire questo "flusso logico":
- eseguo il mio codice (in questo caso trial super-banale)
 in python 2.76
- attivo il virtualenv py3.4 in cui c'è python3.4 ed i relativi
package (tra cui aiohttp)
- eseguo il codice asyncioUse_5.py
- disattivo il virutalenv py3.4, tornando in questo modo all'ambiente
di default con python2.76

Usando quello che ho trovato qui:
http://stackoverflow.com/questions/6943208/activate-a-virtualenv-with-a-python-script

ho messo allora nel file b.py (scritto in python2.76):
#/usr/bin/python

a = 2
b = 3
somma = a + b
print "somma = ", somma

import os
os.system('/bin/bash --rcfile /home/ubuntu/ggc/prove/py34_activate.sh')

import subprocess
p = subprocess.call(["python3.4",
"/home/ubuntu/ggc/prove/sole24ore/asyncioUse_5.py"])
print p

in py34_activate.sh ho messo:
#!/bin/bash
. /home/ubuntu/ggc/prove/py3.4/bin/activate


risultato:
time python py34Activation.py
somma =  5

cioè mi ha eseguito il codice super-banale in python2.76 e mi ha
attivato il virtualenv in cui c'è python3.4 ed i package relativi (tra
cui aiohttp)
questa volta non mi dice "aiohttp non trovato" perchè si trova nel
virtualenv py3.4, ma non mi esegue il codice asyncioUse_5.py


Qualche suggerimento?

Marco


Maggiori informazioni sulla lista Python