2012-05-05 11 views
8

Estoy en una máquina Mac OSX Lion y descargué wxPython-src-2.9.3.1.tar.bz2. Entonces hice lo siguiente (nota: los mensajes de salida se han eliminado):¿Cómo instalo wxPython en virtualenv

$ tar -xjf wxPython-src-2.9.3.1.tar.bz2 
$ cd wxPython-src-2.9.3.1 
$ mkdir bld 
$ cd bld 
$ source /path/to/myvirtualenv/bin/activate 
(myvirtualenv)$ cross_compiling=yes 
(myvirtualenv)$ export MACOSX_DEPLOYMENT_TARGET=10.6.7 
(myvirtualenv)$ set arch_flags="-arch ppc64 " 
(myvirtualenv)$ ../configure \ 
--with-mac --enable-monolithic --enable-threads --enable-unicode \ 
--enable-debug_flag --enable-debug \ 
--with-libpng --with-libjpeg --with-libtiff --enable-unicode \ 
--with-opengl --enable-graphics_ctx --with-odbc --enable-gui \ 
--with-macosx-sdk=/Developer/SDKs/MacOSX10.6.sdk --with-macosx-version-min=10.6 \ 
CFLAGS="$arch_flags" CXXFLAGS="$arch_flags" CPPFLAGS="$arch_flags" LDFLAGS="$arch_flags" OBJCFLAGS="$arch_flags" OBJCXXFLAGS="$arch_flags" --prefix=/path/to/myvirtualenv/ 
$ (myvirtualenv)make 
$ (myvirtualenv)make install 

Después de eso, me hizo llegar este mensaje (así que supongo que sucedió):

... 
------------------------------------------------------ 

The installation of wxWidgets is finished. On certain 
platforms (e.g. Linux) you'll now have to run ldconfig 
if you installed a shared library and also modify the 
LD_LIBRARY_PATH (or equivalent) environment variable. 

wxWidgets comes with no guarantees and doesn't claim 
to be suitable for any purpose. 

Read the wxWindows Licence on licencing conditions. 

------------------------------------------------------ 

Y me devolvió a mi caparazón. Sin embargo, me parece que no puede usarlo

(myvirtualenv)$ python 
>>> import wxversion 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named wxversion 

Alguna idea de cómo puedo tenerlo instalado en mi virtualenv?

+0

¿Qué puso para installdir? – stark

Respuesta

3

después de leer a través de todos los artículos anteriores, esta es la verdadera clave:

que necesita apuntar el VE en la instalación principal de pitón.

En mi sistema su:

% ln /Library/Python/2.7/site-packages/wxredirect.pth ./default/lib/python2.7/site-packages/wxredirect.pth

+0

Creo que en este comando, "por defecto" es el nombre de su entorno VE, ¿verdad? Eso no es _totalmente_ obvio :) – GreenAsJade

+0

sí, eso es correcto. gracias por la edición. – rbp

8

Para otros, esto es lo que funcionó para mí:

En Mac OS X, he instalado wxpython con Homebrew usando:

brew install wxpython 

Cambie a su directorio virtualenv site-packages:

cd /venv/lib/python2.7/site-packages 

, conectar las dos wx.pth

ln -s /usr/local/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/wx.pth wx.pth 

y luego enlazar el directorio WX-3,0-osx_cocoa:

ln -s /usr/local/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/wx-3.0-osx_cocoa wx-3.0-osx_cocoa 
0

escribí un pequeño script que soluciona este para mis proyectos. Pensé que sería bueno compartirlo.

tengo la siguiente configuración:

  • Python y wxPython instalado a través de cerveza casera
  • usando virtualenvwrapper para gestionar entornos virtuales

Después de iniciar un nuevo proyecto con mkproject, corro el siguiente script para solucionar este problema.

#!/usr/bin/env bash 

echo This script fixes issues with wxpython and virtualenv on mac os. >&2 
echo It needs to be run inside a virtualenv created with virtualenvwrapper. >&2 
echo It also assumes that wxpython was installed through homebrew. >&2 
echo 

PYTHON_FULL_VERSION=$(python --version 2>&1 | awk -F ' ' '{ print $2 }') 
PYTHON_SHORT_VERSION=$(python -c 'import sys; print "%d.%d" % (sys.version_info[0], sys.version_info[1])') 

echo detected python version: "$PYTHON_FULL_VERSION" >&2 

[ -d "$VIRTUAL_ENV" ] || { echo "ERROR: First activate the virtualenvironment." >&2; exit 1; } 

# PART 1: Add homebrew-installed wx to env's site-packages 
HOMEBREW_SITE_PKG="/usr/local/lib/python${PYTHON_SHORT_VERSION}/site-packages" 
VENV_SITE_PKG="${VIRTUAL_ENV}/lib/python${PYTHON_SHORT_VERSION}/site-packages" 

ln -s "${HOMEBREW_SITE_PKG}/wx.pth" "$VENV_SITE_PKG" 
ln -s "${HOMEBREW_SITE_PKG}/wx-3.0-osx_cocoa" "$VENV_SITE_PKG" 

# PART 2: At activation of venv we set PYTHONHOME 
# NB This needs virtualenvwrapper to work 
echo 'export PYTHONHOME="$VIRTUAL_ENV"' >> "${VIRTUAL_ENV}/bin/postactivate" 

# PART 3: link the pythonw executable in the virtualenv 
PYTHONW="/usr/local/Cellar/python/${PYTHON_FULL_VERSION}/bin/pythonw" 
ln -s "$PYTHONW" "${VIRTUAL_ENV}/bin/pythonw" 

echo "You should now re-activate the environment." 
1

Para Windows, puede utilizar el mismo enfoque que cweston esbozado para OS X, traducidos a las llamadas a mklink. Tuve éxito creando un virtualenv para una vieja aplicación basada en Python 2.7/WxPython 2.8 haciendo lo siguiente:

Instale WxPython usando el instalador.

Encuentra el directorio de paquetes de sitio donde se instaló WxPython.Para mí,

C:\Python27\Lib\site-packages

Abra un shell y cambie al directorio site-packages en el interior del virtualenv a la que desea agregar wxpython, dicen que se llama WxApp:

cmd 
cd C:\Virtualenvs\WxApp\Lib\site-packages 

A continuación, cree enlaces: enlaces duros para wx.pth y wxversion.py, y una unión para el directorio que contiene la instalación wxpython (la mía era wx-2.8-msw-unicode):

mklink /h wx.pth C:\Python27\Lib\site-packages\wx.pth 
mklink /h wxversion.py C:\Python27\Lib\site-packages\wxversion.py 
mklink /j wx-2.8-msw-unicode C:\Python27\Lib\site-packages\wx-2.8-msw-unicode\ 

Ahora tienen acceso al módulo wx:

C:\> C:\VirtualEnvs\WxApp\scripts\activate.bat 
(WxApp) C:\>python 
ActivePython 2.7.2.5 (ActiveState Software Inc.) based on Python 2.7.2 (default, Jun 24 2011, 12:21:10) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import wx 
>>> wx.version() 
'2.8.12.1 (msw-unicode)' 
>>> 
0

creo que el más limpio de todos ellos es que su sistema de pitón tan limpio como sea posible de su trabajo de desarrollo posible. Cuanto más agregues cosas al azar, más probabilidades hay de que te encuentres con algún problema oscuro.

PERO

Puesto que es la instalación de todo el sistema brebaje que es su opción más fácil para wxPython, que por alguna razón no parecen tener el embalaje adecuado pitón/pip integración. En este caso, va a los paquetes de sitio de su sistema.

virtualenv admite la vinculación en sus paquetes de sitio de todo el sistema a su virtualenv de forma solo de lectura. Asegúrese de crear el virtualenv con --system-site-packages switch. Esto lo hará transparente para la instalación de python subyacente.

Espero que esto ayude a las personas a enfrentar esto en el futuro.

0

Esto se debe a que cuando instaló su versión de python, tuvo que requerir que CPython la instalación se construya con --enable-framework. Entonces, en su Mac debe ejecutar lo siguiente:

$ env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.x.x