[我最初在 StackOverflow 上以不同的标题发布了这个问题(这里),但后来我意识到我的问题与 非常相关apt-get
,因此我在这里重新发布。抱歉重复了。]
我正在尝试在 Ubuntu 上(以及在虚拟环境中)安装 PyQt。我遇到的障碍列表太长了,无法在此列出,但我目前正在尝试克服的障碍是:
% workon myvenv
(myvenv)% cd ~/.virtualenvs/myvenv/build/pyqt
(myvenv)% python ./configure.py
Traceback (most recent call last):
File "./configure.py", line 32, in <module>
import sipconfig
好的,让我们安装sipconfig
...
(myvenv)% pip install SIP
Downloading/unpacking SIP
Downloading sip-4.14.8-snapshot-02bdf6cc32c1.zip (848Kb): 848Kb downloaded
Running setup.py egg_info for package SIP
Traceback (most recent call last):
File "<string>", line 14, in <module>
IOError: [Errno 2] No such file or directory: '/home/yt/.virtualenvs/myvenv/build/SIP/setup.py'
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 14, in <module>
IOError: [Errno 2] No such file or directory: '/home/yt/.virtualenvs/myvenv/build/SIP/setup.py'
----------------------------------------
Command python setup.py egg_info failed with error code 1 in /home/yt/.virtualenvs/myvenv/build/SIP
Storing complete log in /home/yt/.pip/pip.log
到目前为止,我发现安装 SIP 的唯一方法是
% python configure.py
% make
% sudo make install
...但是这种方法违背了我的政策,即通过apt-get
(或者pip
在 Python 模块的情况下通过)完成所有 Ubuntu 安装。
有没有什么方法可以让我使用 apt-get (可能还有 pip)安装 SIP?
答案1
这里的主要问题是virtualenv
似乎更喜欢符号链接/usr/include
而不是复制这些文件(您可以在检查我的系统中的源$VIRTUAL_ENV/include
代码时检查这一点)。virtualenv
/usr/local/lib/python2.7/dist-packages/virtualenv.py
一个简单的解决方案就是删除符号链接并从中复制这些文件/usr/include
:
$ cd $VIRTUAL_ENV/include/
$ rm python2.7
$ cp -r /usr/include/python2.7/ .
请注意,您可能有/usr/include/python2.7
指向相对位置的符号链接,因此当您复制这些文件时它们将会损坏。
然后你只需要稍微修改一下:
$ python configure.py --incdir="$VIRTUAL_ENV/include/python2.7"
$ make
$ make install
顺便说一句:如果你想强制复制这些文件而不是符号链接,只需更改源代码文件中virtualenv
的定义。这是一个丑陋的解决方案,但有效。copyfile
def copyfile(src, dest, symlink=True):
|-> change this to False