web-dev-qa-db-fra.com

pip cassé, la réinstallation ne fonctionne pas. EC2

J'utilise pip sur EC2 maintenant, la version Python est 2.7. 'Sudo pip' ne fonctionne plus du tout.

[ec2-user@ip-172-31-17-194 ~]$ Sudo pip install validate_email
Traceback (most recent call last):
  File "/usr/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3138, in <module>
    @_call_aside
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3124, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3151, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 663, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 676, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 849, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'pip==6.1.1' distribution was not found and is required by the application
[ec2-user@ip-172-31-17-194 ~]$ which pip
/usr/local/bin/pip
14
Marshall X

d'abord, which pip ne va pas retourner le même résultat que Sudo which pip, vous devriez donc vérifier cela en premier.

vous pouvez également envisager de ne pas exécuter pip en tant que Sudo . Est-il acceptable et sûr d'exécuter pip install sous sudo?

deuxièmement, pouvez-vous essayer ceci:

easy_install --upgrade pip

si vous obtenez une erreur ici (concernant le support de la roue de pip), essayez ceci, puis exécutez à nouveau la commande ci-dessus:

easy_install -U setuptools
11
wesm

J'ai corrigé la même erreur ("La distribution 'pip == 6.1.1' n'a pas été trouvée") en utilisant la pointe de Wesm:

$> which pip && Sudo which pip
/usr/local/bin/pip
/usr/bin/pip

Donc, il semble que "pip" de l'utilisateur moyen et de la racine ne sont pas les mêmes. Va le réparer plus tard.

Puis j'ai lancé "Sudo easy_install --upgrade pip" => réussir

Ensuite, j'ai utilisé "Sudo/usr/local/bin/pip install" et cela fonctionne.

4
JayMore

Quelques informations supplémentaires pour ceux qui sont également bloqués sur le même problème: - 

L'exécution de commandes avec Sudo recherche la commande dans le répertoire usr/bin. Un moyen de résoudre ce problème consiste à spécifier le chemin complet de la commande en utilisant Sudo, commenté par @Cissoid dans la section commentaire de la question.

Ou 

... vous pouvez créer un lien symbolic (lien sym) vers cette commande dans le répertoire usr/bin à l'aide de la commande ln.

$> ln -s /usr/local/bin/pip /usr/bin/pip

La syntaxe est la suivante: -

$> ln -s /path/to/file /path/to/link 
1
Pritish Sehzpaul

J'ai essayé quelques unes de ces solutions sans grand succès. En fin de compte, je viens de créer une nouvelle instance en utilisant Ubuntu comme système d'exploitation. Il était déjà configuré correctement pour utiliser Python correctement.

Si ce n'est pas possible, vous pouvez essayer de lier l'utilisateur pip dans un dossier situé sur le chemin de la racine (Sudo).

0
Martlark