如何使用 apt-get + pip + virtualenv 安装 SIP+PyQt?

如何使用 apt-get + pip + virtualenv 安装 SIP+PyQt?

[我最初在 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

相关内容