如何在虚拟环境中安装SIP和PyQt?

15

我对 virtualenv 比较陌生。我想安装 spyder,但需要 PyQt4,而它又需要 SIP

pip 无法使用,于是我下载了 SIP,并执行了以下命令:

python configure.py
make
make install

但是我收到了这个错误:

make[1]: entrant dans le répertoire « /stck2/stck2.2/ptoniato/python/pip/virtualenv-1.10.1/provaenv/build/SIP/sipgen »
cp -f sip /stck2/stck2.2/ptoniato/python/pip/virtualenv-1.10.1/provaenv/bin/sip
make[1]: quittant le répertoire « /stck2/stck2.2/ptoniato/python/pip/virtualenv-1.10.1/provaenv/build/SIP/sipgen »
make[1]: entrant dans le répertoire « /stck2/stck2.2/ptoniato/python/pip/virtualenv-1.10.1/provaenv/build/SIP/siplib »
cp -f sip.so /stck2/stck2.2/ptoniato/python/pip/virtualenv-1.10.1/provaenv/lib/python2.7/site-packages/sip.so
strip /stck2/stck2.2/ptoniato/python/pip/virtualenv-1.10.1/provaenv/lib/python2.7/site-packages/sip.so
cp -f /stck2/stck2.2/ptoniato/python/pip/virtualenv-1.10.1/provaenv/build/SIP/siplib/sip.h /usr/local/python/include/python2.7/sip.h
cp: impossible de supprimer « /usr/local/python/include/python2.7/sip.h »: Permission non accordée
make[1]: *** [install] Erreur 1
make[1]: quittant le répertoire « /stck2/stck2.2/ptoniato/python/pip/virtualenv-1.10.1/provaenv/build/SIP/siplib »
make: *** [install] Erreur 2

Impossible de supprimer 意为无法删除。

我没有此计算机的 root 访问权限。我认为在这台计算机上预装的 Python 包与我正在创建的 virtualenv 之间存在冲突。

我该如何解决这个问题?


只需跟随此链接:https://dev59.com/l3I-5IYBdhLWcg3wN1lD - jokober
2个回答

19
这是我在虚拟环境中安装sip的步骤。关键是要确保使用(未记录的?)--always-copy标志,以便它不仅将/usr/include/python2.7目录链接到您的virtualenv中。
virtualenv --always-copy ve
. ve/bin/activate
wget http://sourceforge.net/projects/pyqt/files/sip/sip-4.15.4/sip-4.15.4.zip
unzip sip-4.15.4.zip
cd sip-4.15.4
python configure.py --incdir=../ve/include/python2.7
make
make install
cd ..

然后,我就能够像这样安装PyQt4:

wget http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.10.3/PyQt-x11-gpl-4.10.3.tar.gz
tar zxvf PyQt-x11-gpl-4.10.3.tar.gz
cd PyQt-x11-gpl-4.10.3
python configure.py
make
make install

末尾确实出现了一个错误,但被忽略了。我认为这只是安装“设计师”时的一部分,不是关键问题。

install: cannot create regular file `/usr/lib/x86_64-linux-gnu/qt4/plugins/designer/libpyqt4.so': Permission denied
make[1]: [install_target] Error 1 (ignored)

2
在使用Ubuntu 14.10、python3.4以及撰写本文时的最新版本的sip和pyqt时,我必须在编译sip时使用绝对路径(/home/username/.virtualenvs/ve/include/python3.4)来指定incdir。对于PyQt,我必须使用--sip-incdir选项并提供相同(绝对)路径。 此外,请准备一些咖啡和耐心,因为PyQt非常庞大,在这里编译需要一些时间。 - thomas
我想补充一下,“python configure.py --incdir…”中的“--incdir”部分对我来说是必要的,这使我能够消除“权限被拒绝”的错误,并且也导致“import sipconfig”和“import sip”正常工作。当省略“--incdir…”时,只有“import sip”可以正常工作。 - user3391229
大家好!我正在尝试在虚拟环境中进行安装,但遇到了问题。SIP的安装进行得很顺利,我安装了SIP版本4.19.2。但是当我运行PyQt 4.12的配置时,出现了错误:“错误:此版本的PyQt需要SIP v4.19.0或更高版本”。我尝试使用--incdir设置包含目录来运行,但没有成功。我是否漏掉了什么步骤? - jspada

7

请确保您已经激活了虚拟环境。 如果您已经安装了pyenv和pyenv-virtualenv,您可以快速执行以下命令。

我刚刚成功地在新创建的虚拟环境中安装了SIP和PyQt4:

pyenv virtualenv testenvironment
pyenv rehash
pyenv shell testenvironment
cd ~/.pyenv/versions/testenvironment/
pip install --no-install sip #fails but do not worry
cd build/sip/
python configure.py #--incdir=~/.pyenv/versions/testenvironment/include/python2.7 may be needed
make
make install
cd ../../

那么你现在可以下载并安装PyQt4,但需要手动操作。请前往PyQt4页面获取最新版本到工作目录,然后解压,接下来就可以使用configure/make/make install命令进行安装。

在Python交互式会话中导入一些PyQt4包进行测试:

>>> from PyQt4 import QtCore, QtGui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接