59

我正在使用Virtualenv在我的开发环境中获利web.pysimplejson以及其他面向 Web 的包。
我将使用 Qt 开发一个简单的 python 客户端,以重用一些使用 web.py 开发的 Api。

这里有人用 Virtualenv 成功安装了 PyQt4 吗?
可能吗?

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

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

4

13 回答 13

52

创建一个空的 virtualenv 然后将.../site-packages/PyQt4目录的内容复制到其中就足够了。

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

于 2009-12-25T22:17:40.730 回答
46

我也有同样的问题。我使用 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

链接到要点

于 2012-03-15T08:23:36.503 回答
29

Linux Debian,python 2.7:

  • 全局安装 python-qt4: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/
于 2015-03-04T08:51:45.067 回答
8

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

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

然后创建你的虚拟环境

$ 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
于 2014-04-01T10:56:45.507 回答
7

我问是否可以在 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.
于 2011-01-12T20:43:30.147 回答
6

假设您的 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.
于 2012-12-20T07:18:54.723 回答
6

最简单的方法是安装这个:vext.pyqt4

这会将单个系统PyQt4包添加到您的 virtualenv。

Ubuntu 16.04 使用:

sudo apt install python3-pyqt4
mkvirtualenv --python=python3.5 venv
pip install --no-use-wheel vext.pyqt4
于 2017-12-18T09:02:18.557 回答
4

对于 PySide 1.2.1 和 Ubuntu 12.4

安装编译器、Qt 相关、python 源

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

创建虚拟环境virtualenvwrapper

准备编译 Qt(约 30 分钟)

$ mkvirtualenv ve_name
(ve_name)$ pip install PySide

测试

$ python -c "from PyQt4 import QtCore; print QtCore.PYQT_VERSION_STR"
4.9.1
于 2013-12-28T18:52:01.540 回答
4

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

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 

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

于 2014-02-14T16:39:42.893 回答
3

对我有用的是复制和/PyQt4/更改这些复制文件的所有权权限(因为副本归根用户所有)。sip.x86_64-linux-gnu.so/usr/lib/python2.7/dist-packages<VIRTUALENV>/lib/python2.7/site-packages

于 2015-12-17T16:27:52.357 回答
2

扩展 Aaron Digulla 的答案,使用 git 来获取正确的文件列表可能非常方便。我通常会做这样的事情(来自 msysGit shell):

# 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++ 代码创建绑定,您需要在sipconfig.py复制文件后修改文件中的路径。否则,SIP 的构建系统仍将指向系统 Python 文件夹(例如,C:\Python32或其他),如果您从那里删除所有 PyQt4 安装的文件,这将不起作用。(如果您自己不打算使用 SIP,您可以跳过此部分。)

于 2011-11-16T23:17:07.717 回答
2

符号链接可能有效。

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

/usr/lib/python3/dist-packages/PySide/ $VIRTUAL_ENV/lib/python3.4/site-packages/PySide/对我来说工作之间的符号联系。

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

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

于 2014-11-02T12:37:59.817 回答
0

试试这个: pip install python-qt5

于 2017-07-01T16:22:10.427 回答