是否可以在Virtualenv沙箱上添加PyQt4/PySide包?

2024-03-29 15:07:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Virtualenvweb.pysimplejson以及其他面向web的包,这对我的开发环境有好处。
我将使用Qt开发一个简单的python客户机,以重用用web.py开发的一些Api。

这里有人成功地将PyQt4安装到Virtualenv上了吗?
有可能吗?

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

有没有一种干净的方法来准备一个带有--no-site--packages选项的新沙盒,然后使用pipeasy_install或其他魔术来添加PyQt4PySide


Tags: nopyapiweb客户机环境virtualenv面向
3条回答

Linux debian,python 2.7版:

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

我也有同样的问题。我使用virtualenvwrapper,所以我编写了这个脚本来在每个新的虚拟环境中创建到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

link to gist

它应该足以创建一个空的virtualenv,然后将.../site-packages/PyQt4目录的内容复制到其中。

我建议在全局范围内安装一次PyQt4,复制一个目录,卸载它,然后使用这个技巧创建ve。

相关问题 更多 >