是否可以在Virtualenv沙盒上添加PyQt4 / PySide软件包?

我在web.pysimplejson和其他面向networking的软件包中使用Virtualenv ,在我的开发环境中获利。
我打算开发一个简单的使用Qt的Python客户端来重用一些使用web.py开发的Api。

有没有人在这里成功地安装了PyQt4与Virtualenv?
可能吗?

我已经下载了所有的二进制文件,并在我的python2.6目录下全局安装了PyQt4
如果我不使用--no-site--packages选项,Virtualenv会在我的新沙盒中正确地包含PyQt4 ,但显然,我不需要所有的全局包。

有没有一种干净的方式来准备一个新的沙箱与--no-site--packages选项,然后添加PyQt4PySide使用pipeasy_install或其他魔术技巧?

创build一个空的virtualenv,然后复制.../site-packages/PyQt4目录的内容就足够了。

我build议全局安装一次PyQt4,制作目录的副本,卸载它,然后用这个技巧来创buildVE。

我有同样的问题。 我使用virtualenvwrapper,所以我编写了这个脚本来在每个新的虚拟环境中创build一个到PyQt的链接。 也许对别人有用:

 #!/bin/bash # This hook is run after a new virtualenv is activated. # ~/.virtualenvs/postmkvirtualenv LIBS=( PyQt4 sip.so ) PYTHON_VERSION=python$(python -c "import sys; print (str(sys.version_info[0])+'.'+str(sys.version_info[1]))") VAR=( $(which -a $PYTHON_VERSION) ) GET_PYTHON_LIB_CMD="from distutils.sysconfig import get_python_lib; print (get_python_lib())" LIB_VIRTUALENV_PATH=$(python -c "$GET_PYTHON_LIB_CMD") LIB_SYSTEM_PATH=$(${VAR[-1]} -c "$GET_PYTHON_LIB_CMD") for LIB in ${LIBS[@]} do ln -s $LIB_SYSTEM_PATH/$LIB $LIB_VIRTUALENV_PATH/$LIB done 

链接到要点

Linux debian,python 2.7:

  • 安装python-qt4 globaly: sudo apt-get install python-qt4
  • 创buildPyQt4到你的虚拟环境的符号链接ln -s /usr/lib/python2.7/dist-packages/PyQt4/ ~/.virtualenvs/myEnv/lib/python2.7/site-packages/
  • 创buildsip.so到您的虚拟环境的符号链接ln -s /usr/lib/python2.7/dist-packages/sip.so ~/.virtualenvs/myEnv/lib/python2.7/site-packages/

我问是否可以在irc.freenode.net #pyside频道的virtualenv中安装PySide,并从hugopl获得肯定的答案。 所以我遵循PySide Binaries for Microsoft Windows的指示,它工作。 输出如下。

 Z:\virtualenv\pyside>Scripts\activate.bat (pyside) Z:\virtualenv\pyside>where python Z:\virtualenv\pyside\Scripts\python.exe (pyside) Z:\virtualenv\pyside>easy_install PySide install_dir Z:\virtualenv\pyside\Lib\site-packages\ Searching for PySide Reading http://pypi.python.org/simple/PySide/ Reading http://www.pyside.org Reading http://www.pyside.org/files/pkg/ Best match: PySide 1.0.0beta1qt471 Downloading http://www.pyside.org/files/pkg/PySide-1.0.0beta1qt471.win32-py2.6.exe Processing PySide-1.0.0beta1qt471.win32-py2.6.exe Deleting c:\users\piotr\appdata\local\temp\easy_install-fvfa7e\PySide-1.0.0beta1qt471-py2.6-win32.egg.tmp\EGG-INFO\scripts\py ide-uic-script.py Deleting c:\users\piotr\appdata\local\temp\easy_install-fvfa7e\PySide-1.0.0beta1qt471-py2.6-win32.egg.tmp\EGG-INFO\scripts\py ide-uic.exe creating 'c:\users\piotr\appdata\local\temp\easy_install-fvfa7e\PySide-1.0.0beta1qt471-py2.6-win32.egg' and adding 'c:\users\ iotr\appdata\local\temp\easy_install-fvfa7e\PySide-1.0.0beta1qt471-py2.6-win32.egg.tmp' to it creating z:\virtualenv\pyside\lib\site-packages\PySide-1.0.0beta1qt471-py2.6-win32.egg Extracting PySide-1.0.0beta1qt471-py2.6-win32.egg to z:\virtualenv\pyside\lib\site-packages Adding PySide 1.0.0beta1qt471 to easy-install.pth file Installing pyside-uic-script.pyc script to Z:\virtualenv\pyside\Scripts Installing pyside_postinstall.py script to Z:\virtualenv\pyside\Scripts Installing pyside_postinstall.pyc script to Z:\virtualenv\pyside\Scripts Installing pyside-uic-script.py script to Z:\virtualenv\pyside\Scripts Installing pyside-uic.exe script to Z:\virtualenv\pyside\Scripts Installed z:\virtualenv\pyside\lib\site-packages\pyside-1.0.0beta1qt471-py2.6-win32.egg Processing dependencies for PySide Finished processing dependencies for PySide (pyside) Z:\virtualenv\pyside>python Scripts\pyside_postinstall.py -install Generating file Z:\virtualenv\pyside\Scripts\qt.conf... The PySide extensions were successfully installed. 

对于那些想在Python 3 virtualenv(OSX)中使用PyQt4的人,首先安装PyQt4和SIP(我将使用自制软件)

 $ brew install python3 $ brew install sip --with-python3 $ brew install pyqt --with-python3 

然后创build你的虚拟环境

 $ virtualenv ... 

最后是符号链接(更改您的机器上安装的SIP,PyQt4和Python的版本)

 $ ln -s /usr/local/Cellar/sip/4.15.5/lib/python3.4/site-packages/*.* ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/lib/python3.4/site-packages/ $ ln -s /usr/local/Cellar/pyqt/4.10.4/lib/python3.4/site-packages/PyQt4/*.* ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/lib/python3.4/site-packages/PyQt4 

假设你的virtualenv被命名为myProject,并且你正在使用virtualenvwrapper。 Unix平台也是假设的。

 $ workon myProject $ pip install --no-install SIP $ pip install --no-install PyQt $ cd ~/.virtualenvs/myProject/build/SIP $ python configure.py $ make $ make install $ cd ~/.virtualenvs/myProject/build/PyQt $ python configure.py $ make $ make install $ cd && rm -rf ~/.virtualenvs/myProject/build # Optional. 

对于PySide 1.2.1和Ubuntu 12.4

安装编译器,Qt相关,python源码

 sudo apt-get install cmake qt4-qmake qt-sdk python-dev 

使用virtualenvwrapper创buildvirt env

准备编译Qt(〜30分钟)

 $ mkvirtualenv ve_name (ve_name)$ pip install PySide 

testing

 $ python -c "from PyQt4 import QtCore; print QtCore.PYQT_VERSION_STR" 4.9.1 

我的工作是将/usr/lib/python2.7/dist-packages /PyQt4/sip.x86_64-linux-gnu.so复制到<VIRTUALENV>/lib/python2.7/site-packages并更改所有权这些复制文件的权限(因为副本是由root拥有的)。

扩展Aaron Digulla的答案,使用git获取文件列表是非常方便的。 我通常做这样的事情(从一个msysGitshell):

 # Create temp git repo for the pristine Python installation $ cd /c/Python27 $ git init -q $ git add . $ git commit -qm "Initial commit" 

然后运行PyQt4(或其他)的安装程序。 之后,制作安装程序添加的文件的压缩包,并删除临时的git库,如下所示:

 # Stage the PyQt4-installed files and feed a list of their names to tar # (note that there's no need to actually commit them) $ git add --all $ git diff --cached --name-only | tar -jcf pyqt4.tar.bz2 --files-from=- $ rm -rf .git 

然后你可以运行PyQt4的卸载程序(如果你不想混乱你的系统Python),只需将pyqt4.tar.bz2解压到你的virtualenv文件夹。 如果你已经习惯了使用git,这是确保你获得所有 PyQt4安装文件的好方法。

:使用打包的安装程序安装PyQt4也会安装SIP。 如果你真的想使用这个SIP为你自己的C / C ++代码在你的virtualenv中创build绑定,你需要在复制之后修改sipconfig.py文件中的path。 否则,SIP的构build系统仍然会指向系统的Python文件夹(例如, C:\Python32或其他),如果您从中删除所有PyQt4安装的文件,这将不起作用。 (如果你自己没有使用SIP的意图,你可以跳过这个。)

如果您在Mac上通过brew安装pyqt(特别是我在小牛):

 ln -s /usr/local/Cellar/sip/4.15.2/lib/python2.7/site-packages/*.* ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/lib/python2.7/site-packages ln -s /usr/local/Cellar/pyqt/4.10.3/lib/python2.7/site-packages/PyQt4/ ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/lib/python2.7/site-packages/PyQt4 pip install pygments pyzmq 

当然这些版本的文件夹号码可能会随着时间而改变

符号链接可能工作。

我使用Linux(Debian / sid),python 3.4,PySide,virtualenv和PyCharm(IDE),但是这些相同的指令将适用于任何包和开发环境。

/usr/lib/python3/dist-packages/PySide/ $VIRTUAL_ENV/lib/python3.4/site-packages/PySide/为我工作的符号链接。

  1. cd $VIRTUAL_ENV/lib/python3.4/site-packages/
  2. mkdir PySide
  3. cd PySide
  4. for x in /usr/lib/python3/dist-packages/PySide/* ; do ln -s $x ; done

有趣的是,如果我符号链接只PySide目录,它不起作用。 我需要符号链接目录中的每个文件。 这可能是PyCharm(我的IDE)的限制 – 我不知道。

试试这个:pip install python-qt5