2012-05-05 58 views
8

我在Mac OSX Lion機器上,並且已經下載了wxPython-src-2.9.3.1.tar.bz2。然後我做了以下(注:輸出消息已被刪除):如何在virtualenv中安裝wxPython

$ 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 

我怎麼可以把它安裝在我的virtualenv任何想法?

+0

您對installdir做了什麼? – stark

回答

3

通過以上所有文章看完之後,這纔是真正的關鍵:

您需要將您的VE在主Python安裝。

在我的系統其:

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

+0

我認爲在這個命令中,「default」是你的VE env的名字,對吧?這不是很明顯:) – GreenAsJade

+0

是的,這是正確的。感謝編輯。 – rbp

8

對於其他人來說,這裏是我工作:

brew install wxpython 

在Mac OSX上,我用安裝了自制的wxPython轉入您的virtualenv站點包目錄:

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

我寫了修復此爲我的項目一個小腳本。認爲分享可能很好。

我有以下設置:

  • Python和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。我已成功通過執行以下操作爲基於舊版Python 2.7/WxPython 2.8的應用程序創建virtualenv:

    使用安裝程序安裝WxPython。

    找到安裝WxPython的site-packages目錄。對我來說,

    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

    我認爲最乾淨的他們全部是有系統的Python儘可能乾淨的開發工作成爲可能。你在那裏添加的隨機內容越多,你就會遇到一些晦澀難懂的問題。

    由於它是全系統的釀造安裝這是您的wxPython選擇最簡單的,由於某種原因似乎並不具有適當的蟒蛇包裝/ PIP一體化。在這種情況下,它將進入您的全系統網站包。

    的virtualenv支持在全系統的站點包鏈接到你的virtualenv在只讀方式。請確保您使用--system-site-packages開關創建virtualenv。這將使它對底層python安裝透明。

    我希望這可以幫助未來與此相關的人們。

    0

    這是因爲當您安裝您的python版本時,您必須要求使用--enable-framework來安裝CPython安裝。 因此,在您的Mac上,您必須運行以下內容:

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