web-dev-qa-db-fra.com

Comment installer SIP + PyQt avec apt-get + pip + virtualenv?

[Au départ, j'avais posté cette question, sous un titre différent, dans StackOverflow ( ici ), mais je me suis rendu compte plus tard que mon problème était très spécifique à apt-get, c'est pourquoi je le republie ici. . Désolé pour la duplication.]

J'essaie d'installer PyQt sur Ubuntu (et dans un environnement virtuel). La liste des obstacles que je rencontre est beaucoup trop longue pour être incluse ici, mais celle que j'essaie actuellement de surmonter est la suivante:

% 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

OK, installons donc 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

La seule recette que j’ai trouvée jusqu’à présent en installant SIP est la suivante:

% python configure.py
% make
% Sudo make install

... mais cette recette va à l'encontre de ma politique consistant à effectuer toutes mes installations Ubuntu par le biais de apt-get (ou de pip dans le cas de Python modules).

Est-il possible d'installer SIP avec apt-get (et éventuellement pip)?

3
kjo

Le principal problème ici est que virtualenv semble préférer symlink /usr/include au lieu de copier ces fichiers dans $VIRTUAL_ENV/include (vous pouvez le vérifier en inspectant le code source de virtualenv: /usr/local/lib/python2.7/dist-packages/virtualenv.py dans mon système).

Une solution simple consisterait simplement à supprimer le lien symbolique et à copier ces fichiers de /usr/include:

$ cd $VIRTUAL_ENV/include/
$ rm python2.7
$ cp -r /usr/include/python2.7/ .

Veuillez noter que vous pouvez avoir des liens symboliques sur /usr/include/python2.7 pointant vers des emplacements relatifs. Ainsi, lorsque vous copiez ces fichiers, ils seront brisés.

Ensuite, vous avez seulement besoin d'une petite modification:

$ python configure.py --incdir="$VIRTUAL_ENV/include/python2.7"
$ make
$ make install

BTW: si vous voulez forcer virtualenv à copier ces fichiers au lieu d’un lien symbolique, modifiez simplement la définition de copyfile dans le fichier de code source. C'est une solution laide mais qui fonctionne.

def copyfile(src, dest, symlink=True):
                                 |-> change this to False
2
Salem