2014-10-08 12 views
9

Ho installato wxPython 3.0.1.1, ma non riesco a import wx utilizzando Python 3.4.1. Sto ottenendo il seguente errore:Come usare wxPython per Python 3?

Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 00:54:21) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import wx 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named 'wx' 

Tuttavia, posso import wx se uso Python 2.7 (l'installazione di default nel mio OS X 10.9):

Python 2.7.5 (default, Mar 9 2014, 22:15:05) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import wx 
>>> 

Come posso usare wxPython per Python 3, e in particolare per Python 3.4.1?

+0

Forse è necessario aggiungere la posizione del modulo manualmente ai 'sys. path': 'sys.path.insert ("/posizione/di/wx ")' Ecco una descrizione più dettagliata: http://stackoverflow.com/questions/279237/import-a-module-from- a-relativo-path – jotrocken

+0

@jotrocken Come posso farlo in modo che sia permanente? – Nick

+0

http://stackoverflow.com/questions/3402168/permanently-add-a-directory-to-pythonpath – jotrocken

risposta

11

Hai due diversi pitoni installati sulla macchina (3.4.1 e 2.7.5). Non aspettatevi di essere in grado di usare automaticamente un pacchetto installato in un python (wxPython 3.0.1.1 su python 2.7.5) per essere disponibile in un altro python.

Inoltre wxPython (classico) non funziona con Python 3. Per poterlo fare è necessario wxPython Phoenix.

EDIT: Il metodo consigliato (da @RobinDunn) per installare wxPython (la varietà Phoenix, che lavorerà su 2.7 e 3, now hosted on PyPI) al giorno d'oggi è solo facendo:

pip install wxPython 

Se avete lo sviluppatore versione installata, basta fare il seguente anticipo:

pip uninstall wxPython_Phoenix 

Si può provare a installare uno dei the wxPython Phoenix snapshots in Python 3.4.1. Tuttavia, ricorda che Phoenix non è compatibile al 1000% con il classico e potresti sperimentare l'uno o l'altro inconveniente quando riutilizzi il codice classico (but transitioning its doable e ne vale la pena).

È possibile trovare una completa spiegazione/descrizione nel seguente wiki wxPython al seguente link:

Installing wxPython-Phoenix using pip

ci sono diversi punti importanti:

  • che pip/setuptool è abbastanza nuova (> 6.xx /> 12.xx)

  • che le build sono "non ufficiali", e quindi pip si rifiuta di installarlo: in pratica è necessario aggiungere --pre durante l'installazione con pip.

  • che si rinuncia alla verifica SSL --trusted-host wxpython.org (non più necessaria nelle versioni moderne in cui https ora funziona correttamente).

comando completo per macchine Windows:

C:\python27\scripts\pip.exe install --upgrade --pre -f https://wxpython.org/Phoenix/snapshot-builds/ wxPython_Phoenix 

Si noti che questo installerà wxPython Phoenix per Python 2.7.

+0

Per aggiungere un po 'di più alla risposta di @ nepix32, i widget principali di Phoenix vengono portati, ma non tutti i widget personalizzati lo sono. Se si desidera utilizzare le funzionalità principali di wxPython, quindi Phoenix dovrebbe funzionare per voi. –

+0

@MikeDriscoll Puoi darmi qualche riferimento sullo stato di sviluppo di Phoenix? – Nick

+0

Sicuro. Puoi controllare http://wiki.wxpython.org/ProjectPhoenix. Consiglierei anche di guardare attraverso il gruppo Google wxPython-dev. –

0

Controlla la tua sys.path in un interprete:

import sys 
sys.path 

Se non avete il link corretto per la directory appropriata, non funzionerà.

Inoltre, controllare lib/site-packages nella vostra directory di pitone, per assicurarsi WX sia correttamente installato sul pitone 3. (ci dovrebbe essere una directory che inizia con "WX-3.0")

+0

Non so quale sia il link corretto alla directory corretta. – Nick

+0

Conosci la tua directory Python? Controlla quella directory, vai in Lib, quindi in site-packages. Ci dovrebbe essere una directory che inizia con "wx-3.0". Questo è quello che stai cercando. È nel tuo sys.path? – inirlan

2

Come sembra, wxPython non è ancora completamente portato per Python 3, anche se il numero di versione potrebbe suggerirlo. Questo è il motivo per cui i moduli WX non vengono aggiunti alla sys.path di Python 3.

è possibile accontentarsi di utilizzare wxPython da Python 2.7 o dare un'occhiata a questo SO entrata: Still no wxPython for Python 3 (or 3.3) yet? Questo è ciò che @ nepix32 suggerito.

In alternativa, utilizzare un'altra libreria della GUI che funziona con Python 3. Ecco uno list.

+1

wxPython 3.x non ha nulla a che fare con le convenzioni di denominazione di Python.Sta seguendo lo schema di numerazione delle versioni di wxWidgets. Inoltre, la porta Phoenix di wxPython supporta Python 3, ma al momento non è una porta completa. –

+0

Grazie per le informazioni utili +1 – Nick

7

Per utilizzare wxPython con Python 3.4x è necessario utilizzare wxPython Phoenix, come altri hanno sottolineato. Per installarlo si può fare:

pip install -U --pre -f http://wxpython.org/Phoenix/snapshot-builds/ wxPython_Phoenix 

Nota lo spazio dopo l'ultima '/' e wxPython_Phoenix

+1

Viene visualizzato un avviso se si utilizza la versione 'http' invece di' https'. – JeromeJ

0

Forse le soluzioni fornite in precedenza lavorato prima. Ma che cosa ha funzionato per me oggi (1 giugno 2017) è stato:

pip install - U - - pre - f https://wxpython.org/Phoenix/snapshot-builds/ wxPython 

Controllare sempre il Readme.txt per questo ...