Il est où Pip ?

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous,
Souhaitant maîtriser Pip, je me suis tout naturellement tourné vers cet article de sam&max. Mais dès la première ligne, j'ai un problème. Il est dit :

A partir des versions 2.7.9 et et 3.4, pip est fournit automatiquement avec Python. Si c’est votre cas, vous pouvez sauter la partie installation et aller directement à la partie usage de cet article.

Je possède la version 3.4.0 installée depuis les dépôts d'Ubuntu 14.04.2 LTS et je n'ai pas Pip d'installé. O_o Est-ce normal ? De plus en installant Pip avec easy_install, comme le conseille l'article, comment faire pour que ce soit bien Pip pour la version de python 3.4 qui soit installé ? Faut-il que j'installe python-setuptools ou python3-setuptools ?

Et enfin, installez-vous les libs dans votre dossier personnel ou avec sudo ?

Merci de votre aide !

Le problème c'est qu'il y a plein de façon d'installer Pip3… Ça me parait vraiment très mal foutu. Avec

1
sudo apt-get install python3-pip

Il m'est impossible d'installer un package :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
sudo pip3 install tweepy
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    load_entry_point('pip==1.5.4', 'console_scripts', 'pip3')()
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 351, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2363, in load_entry_point
    return ep.load()
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2088, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/usr/lib/python3/dist-packages/pip/__init__.py", line 61, in <module>
    from pip.vcs import git, mercurial, subversion, bazaar  # noqa
  File "/usr/lib/python3/dist-packages/pip/vcs/mercurial.py", line 9, in <module>
    from pip.download import path_to_url
  File "/usr/lib/python3/dist-packages/pip/download.py", line 25, in <module>
    from requests.compat import IncompleteRead
ImportError: cannot import name 'IncompleteRead'

L'installation avec easy_install3 c'est n'importe quoi, ça me met plein de message à chaque fois..

J'aime pas Pip et j'ai l'impression que je suis le seul…

Merci de ta réponse!

+0 -0

En faisant une recherche, il semblerait que ce bug soit connu depuis pas mal de temps. Avec Debian 8 je n'ai pas eu ce problème, mais d'après le premier message trouver sur stackoveflow, je crois que pour le résoudre il faut mettre pip à jour avec la commande sudo easy_install3 -U pip. Le message suivant dans le fil de stackoverflow explique pourquoi ce bug existe… Blâme qui tu veux. ;)

Merci ça semble fonctionner beaucoup mieux. Deux nouveaux problèmes :

1
2
3
4
5
6
7
8
9
sudo pip3 install tweepy -U
The directory '/home/louis/.cache/pip/log' or its parent directory is not owned by the current user and the debug log has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/louis/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/louis/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Requirement already up-to-date: tweepy in /usr/local/lib/python3.4/dist-packages
Requirement already up-to-date: requests-oauthlib>=0.4.1 in ./.local/lib/python3.4/site-packages (from tweepy)
Requirement already up-to-date: requests>=2.4.3 in ./.local/lib/python3.4/site-packages (from tweepy)
Requirement already up-to-date: six>=1.7.3 in ./.local/lib/python3.4/site-packages (from tweepy)
Requirement already up-to-date: oauthlib>=0.6.2 in ./.local/lib/python3.4/site-packages (from requests-oauthlib>=0.4.1->tweepy)

Il me dit que mes dossiers personnels n'appartiennent pas à sudo, ce qui est normal. Mais je suis obligé de lancer Pip avec sudo non ?

Ensuite, on fait un petit test :

1
2
3
4
5
6
7
8
import tweepy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.4/dist-packages/tweepy/__init__.py", line 16, in <module>
    from tweepy.auth import OAuthHandler, AppAuthHandler
  File "/usr/local/lib/python3.4/dist-packages/tweepy/auth.py", line 9, in <module>
    from requests_oauthlib import OAuth1Session, OAuth1
ImportError: No module named 'requests_oauthlib'

En gros c'est le bazar, j'ai requests_oauthlib qui est installé avec sudo mais je ne l'ai pas sur mon compte personnel. Donc quand je fais un pip install requests_oauthlib sans sudo il me dit que je n'ai pas les autorisations nécessaires pour l'installer… Très bien. Je rajoute donc le flag --user, sudo pip3 install --user requests_oauthlib (qui permet de l'installer sur mon compte) mais là il me dit qu'il est déjà installé ! O_o

Je ne comprend plus rien, et j'espère ne pas vous avoir embrouillé…

+0 -0

En fait, tu peux très bien utiliser pip sans sudo, c'est ce qu'on fait généralement. Utiliser pip avec sudo sans –user, c'est censé installer l'egg dans le système (accessible à tous les programmes), sans le sudo et avec l'user, ça l'installe dans tes répertoires perso (ls ~/.local/lib/python3.4). L'avantage, c'est que tu peux créer des environnements avec des versions précises de bibliothèques pour chaque utilisateurs, et avec d'autres outils (virtualenv en particulier) même pour chaque programme.

Sauf que si tu fais sudo pip3 install --user machin, tu l'installes dans /root/ et non pour ton système.

Donc si j'ai bien compris ce que tu m'as dit, je dois faire pip3 install tweepy --user ? Bah… Il n'aime pas ça :(

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Collecting tweepy
  Downloading tweepy-3.3.0-py2.py3-none-any.whl
Collecting requests-oauthlib>=0.4.1 (from tweepy)
  Using cached requests_oauthlib-0.5.0-py2.py3-none-any.whl
Collecting requests>=2.4.3 (from tweepy)
  Using cached requests-2.7.0-py2.py3-none-any.whl
Collecting six>=1.7.3 (from tweepy)
  Using cached six-1.9.0-py2.py3-none-any.whl
Collecting oauthlib>=0.6.2 (from requests-oauthlib>=0.4.1->tweepy)
  Using cached oauthlib-0.7.2.tar.gz
Installing collected packages: requests, oauthlib, requests-oauthlib, six, tweepy
  Exception:
  Traceback (most recent call last):
    File "/usr/local/lib/python3.4/dist-packages/pip-6.1.1-py3.4.egg/pip/basecommand.py", line 246, in main
      status = self.run(options, args)
    File "/usr/local/lib/python3.4/dist-packages/pip-6.1.1-py3.4.egg/pip/commands/install.py", line 352, in run
      root=options.root_path,
    File "/usr/local/lib/python3.4/dist-packages/pip-6.1.1-py3.4.egg/pip/req/req_set.py", line 693, in install
      **kwargs
    File "/usr/local/lib/python3.4/dist-packages/pip-6.1.1-py3.4.egg/pip/req/req_install.py", line 817, in install
      self.move_wheel_files(self.source_dir, root=root)
    File "/usr/local/lib/python3.4/dist-packages/pip-6.1.1-py3.4.egg/pip/req/req_install.py", line 1018, in move_wheel_files
      isolated=self.isolated,
    File "/usr/local/lib/python3.4/dist-packages/pip-6.1.1-py3.4.egg/pip/wheel.py", line 138, in move_wheel_files
      name, user=user, home=home, root=root, isolated=isolated
    File "/usr/local/lib/python3.4/dist-packages/pip-6.1.1-py3.4.egg/pip/locations.py", line 236, in distutils_scheme
      i.finalize_options()
    File "/usr/lib/python3/dist-packages/setuptools/command/install.py", line 30, in finalize_options
      _install.finalize_options(self)
    File "/usr/lib/python3.4/distutils/command/install.py", line 365, in finalize_options
      self.create_home_path()
    File "/usr/lib/python3.4/distutils/command/install.py", line 590, in create_home_path
      os.makedirs(path, 0o700)
    File "/usr/lib/python3.4/os.py", line 227, in makedirs
      makedirs(head, mode, exist_ok)
    File "/usr/lib/python3.4/os.py", line 237, in makedirs
      mkdir(name, mode)
  PermissionError: [Errno 13] Permission denied: '/home/louis/.local/lib/python3.4'

J'ai pourtant fait un chmod 777 -R sur le dossier…

ls -l /home/louis/.local/lib/python3.4 ? Il a sûrement été créé par l'utilisateur root, donc appartient au groupe root et l'utilisateur root (même si c'est bizarre que tu ne puisses pas écrire dedans).

A la limite, tu peux aussi le supprimer et laisser pip le recréer proprement, si tu n'as pas besoin de ce qu'il y a dedans. ;)

J'ai ça chez moi :

1
2
3
4
┌(alexandre@alexandre-portable)─(07:25  dim. mai 17)
└─(~)─(184 files, 6,6Gb)─> ls -l .local/lib/python3.4/
total 4
drwx------ 6 alexandre users 4096 17 mai   19:23 site-packages
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte