2012-05-05 3 views
8

Я нахожусь на машине Mac OSX Lion, и я загрузил wxPython-src-2.9.3.1.tar.bz2. Затем я сделал следующее (примечание: выходные сообщения были удалены):Как установить wxPython в 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 

После этого, я получаю это сообщение (, так что я предполагаю, что это удалось):

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

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. 

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

И вернул меня в свою оболочку. Тем не менее, я не могу использовать его

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

Любые идеи, как я могу установить его в своем виртуальном пространстве?

+0

Что вы положили для installdir? – stark

ответ

3

после прочтения всех статей выше, это реальный ключ:

вам необходимо указать ваш VE на главной установке питона.

В моей системе его:

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

+0

Я думаю, что в этом комманде «default» - это имя вашего VE env, верно? Это не _totally_ очевидно :) – GreenAsJade

+0

да, это правильно. спасибо за редактирование. – rbp

8

Для других, вот то, что работает для меня:

В Mac OSX, я установил WxPython с Homebrew помощью:

brew install wxpython 

Перейдите в каталог виртуальных сайтов:

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

затем свяжите wx.pth

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

, а затем связать каталог 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

Я написал небольшой скрипт, который фиксирует это для моих проектов. Думал, что было бы неплохо поделиться.

У меня есть следующие настройки:

  • питон и WxPython установлен через самогон
  • использование virtualenvwrapper для управления виртуальных сред

После запуска нового проекта с mkproject, я бегу следующий сценарий, чтобы исправить эту проблему.

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

Для Windows, вы можете использовать тот же подход, что cweston описанной для OS X, переведенный на вызовы mklink. У меня был успех, созданный virtualenv для старого приложения Python 2.7/WxPython 2.8, выполнив следующие действия:

Установите WxPython с помощью установщика.

Найти каталог сайтов, где был установлен WxPython.Для меня,

C:\Python27\Lib\site-packages

Открыть оболочку и перейдите в каталог сайтов-пакеты внутри virtualenv, к которому вы хотите добавить WxPython, скажем, это называется WxApp:

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

Затем создайте ссылки: жесткие ссылки на wx.pth и wxversion.py, и перехода на каталог, содержащий установку WxPython (шахта была 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\ 

Теперь у меня есть доступ к 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

Я считаю, чистейшая из них все, чтобы ваша система питон как можно более чистым от вашей работы в области развития, как это возможно. Чем больше вы добавляете случайные вещи там, тем больше вероятность того, что вы столкнетесь с какой-то неясной проблемой.

НО

Поскольку общесистемная установка заварить это ваш самый простой выбор для WxPython, который по какой-то причине, кажется, не имеет надлежащую упаковку питона/пип интеграции. В этом случае он входит в ваши системные пакеты сайтов.

virtualenv поддерживает связь в ваших общесистемных пакетах сайтов с вашим виртуальным пользователем в режиме «только для чтения». Убедитесь, что вы создали virtualenv с --system-site-packages. Это сделает его прозрачным для базовой установки python.

Я надеюсь, что это поможет людям, приходящим навстречу этому в будущем.

0

Это потому, что, когда вы установили свою версию python, вам потребовалось установить . Установка CPython будет выполнена с --enable-framework. Итак, на вашем Mac вам необходимо запустить следующее:

$ env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.x.x 
Смежные вопросы