2012-05-05 33 views
8

Jestem na komputerze Mac OSX Lion i pobrałem wxPython-src-2.9.3.1.tar.bz2. Potem zrobiłem następujący (UWAGA: Komunikaty wyjściowe zostały usunięte):Jak zainstalować wxPython w 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 

potem zrobiłem ten komunikat (więc myślę, że udało):

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

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. 

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

I zwrócił mnie do mojej skorupy. Jednak nie wydaje się używać go

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

Jakieś pomysły, w jaki sposób mogę go zainstalować w moim virtualenv?

+0

co napisałeś dla installdir? – stark

Odpowiedz

3

po przeczytaniu wszystkich powyższych artykułów, to jest prawdziwy klucz:

trzeba podkreślić swoje VE przy głównej instalacji Pythona.

W moim systemie jej:

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

+0

Myślę, że w tym commante "default" jest nazwą twojego VE env, prawda? To nie jest absolutnie oczywiste :) – GreenAsJade

+0

tak, to prawda. dzięki za edycję. – rbp

8

Dla innych, tutaj jest to, co pracował dla mnie:

W systemie Mac OS X, zainstalowałem wxpython z Homebrew używając:

brew install wxpython 

Przejdź do katalogu pakietów-virtualenv:

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

następnie połączyć wx.pth

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

a następnie połączyć katalog 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

Napisałem mały skrypt, który naprawia to dla moich projektów. Pomyślałem, że może być miło podzielić się tym.

Mam następującą konfigurację:

  • Python i wxpython zainstalowany przez home-brew
  • użyciu virtualenvwrapper do zarządzania środowiskami wirtualnymi

Po uruchomieniu nowego projektu z mkproject, ja uruchomić następujący skrypt, aby rozwiązać ten problem.

#!/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

W systemie Windows można używać tego samego podejścia, które cweston opisaną dla OS X, tłumaczone na wezwania do mklink. Udało mi się stworzyć virtualenv dla starej aplikacji opartej na Pythonie 2.7/WxPython 2.8, wykonując następujące czynności:

Zainstaluj WxPython za pomocą instalatora.

Znajdź katalog strony-pakiety, w których zainstalowano WxPython.Dla mnie

C:\Python27\Lib\site-packages

Otwórz powłoki i przejdź do katalogu site-packages wewnątrz virtualenv, do którego chcesz dodać WxPython, mówią, że to nazywa WxApp:

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

Następnie należy utworzyć linki: twarde łącza dla wx.pth i wxversion.py oraz skrzyżowanie katalogu zawierającego instalację WxPython (kopalnia była 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\ 

Teraz mam dostęp do modułu 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

wierzę najczystszym z nich wszystkich jest, aby mieć swój Pythona systemu tak czysty, jak to możliwe z prac rozwojowych, jak to możliwe. Im więcej dodasz tam losowych rzeczy, tym bardziej prawdopodobne jest, że natkniesz się na jakiś niejasny problem.

ALE

Ponieważ jest systemowy montaż napar, że to najprostszy wybór dla wxPython, które z jakiegoś powodu nie wydają się mieć odpowiednie opakowanie Pythona/PIP integracji. W tym przypadku trafia do twoich ogólnosystemowych pakietów stron.

virtualenv obsługuje łączenie w Twoim systemie pakietów systemowych z virtualenv w trybie tylko do odczytu. Upewnij się, że utworzysz virtualenv z przełącznikiem - system-site-packages. To sprawi, że będzie przejrzyste dla podstawowej instalacji Pythona.

Mam nadzieję, że pomoże to ludziom w przyszłości.

0

To dlatego, że po zainstalowaniu wersji python, trzeba było wymagać, aby zainstalować CPython instalację z --enable-framework. Tak więc na komputerze Mac trzeba uruchomić następujące:

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