2015-10-27 9 views
7

Sto provando a creare un'app con cx_freeze ed esky. Funzionava prima (ok, forse qualche mese fa. Da allora, python 3.5 è uscito).'importlib._bootstrap' non ha attributo 'SourceLoader'

Ho la seguente eccezione:

File "/usr/lib/python3.5/site-packages/esky/util.py", line 578, in compile_to_bytecode 
    loader = importlib._bootstrap.SourceLoader()  
AttributeError: module 'importlib._bootstrap' has no attribute 'SourceLoader' 

sto usando:

  • Python 3.5.0
  • Esky 0.9.9 (l'ultima) da PyPI
  • cx_freeze 4.3. 4-2

E io sono su Manjaro (Linux). Non riesco a capire da dove viene il problema. Potresti darmi una mano per favore?

risposta

1

mmm ci potrebbe essere un bug lì a guardare il codice sorgente:

if sys.version_info[:2] < (3, 1): 
    bytecode = imp.get_magic() + struct.pack("<i", 0) 
    bytecode += marshal.dumps(compile(source_code, compile_filename, "exec")) 
elif sys.version_info[:2] < (3, 4): 
    bytecode = imp.get_magic() + struct.pack("<ii", 0, 0) 
    bytecode += marshal.dumps(compile(source_code, compile_filename, "exec")) 
else: 
    loader = importlib._bootstrap.SourceLoader()  
    code = loader.source_to_code(source_code, '<string>') 
    bytecode = importlib._bootstrap._code_to_bytecode(code, mtime=0, source_size=0) 

Puoi provare a sostituire quella linea con:

loader = importlib._bootstrap_external.SourceLoader()

Se funziona quindi provare a utilizzare un minore versione di 3.5 e presenta un bug nella loro pagina di rilascio di github.

+0

Hum, ma ancora non funziona, ma per un altro motivo: '' 'AttributeError: modulo 'importlib._bootstrap' non ha '_code_to_bytecode'''' attributo alla riga 580 dello stesso file. Un po 'meglio, abbiamo spostato due righe avanti :) – Rififi

+1

Sì, perché anche questa riga deve essere cambiata in'bytecode = importlib._bootstrap_external._code_to_bytecode (codice, mtime = 0, source_size = 0) – lapinkoira

+0

Questo è solo un hotfix, probabilmente più cose non funzioneranno, quindi penso che sia un po 'buggato in python3.5 o che abbia qualche problema – lapinkoira

6

Mi sono imbattuto in questo stesso problema oggi.

L'esecuzione dei seguenti comandi nel terminale ha risolto il problema.

➜ ~ pip install --upgrade pip 
➜ ~ pip install --upgrade virtualenvwrapper 
➜ ~ mkvirtualenv -p /usr/local/bin/python3 test_env 
Problemi correlati