web-dev-qa-db-fra.com

Let's Encrypt certbot-auto échoue car un problème Python / pip

Hier, tout allait bien, mais aujourd'hui, en exécutant la même commande en utilisant certbot-auto pour renouveler un certificat, j'obtiens ceci:

Upgrading certbot-auto 0.31.0 to 0.32.0...
Replacing certbot-auto...
Creating virtual environment...
Installing Python packages...    
/opt/eff.org/certbot/venv/bin/python: No module named pip.__main__; 'pip' is a package and cannot be directly executed
    Traceback (most recent call last):
      File "/tmp/tmp.eUWQ3w7cFV/pipstrap.py", line 177, in <module>
        sys.exit(main())
      File "/tmp/tmp.eUWQ3w7cFV/pipstrap.py", line 149, in main
        pip_version = StrictVersion(check_output([python, '-m', 'pip', '--version'])
      File "/usr/lib/python2.7/subprocess.py", line 544, in check_output
        raise CalledProcessError(retcode, cmd, output=output)
    subprocess.CalledProcessError: Command '['/opt/eff.org/certbot/venv/bin/python', '-m', 'pip', '--version']' returned non-zero exit status 1

Je suis sur Debian 7.9 ... quelqu'un avec le même problème?

8
Vallica

C'est un problème avec les dernières versions (> = 0.32.x) sur Ubuntu 12.04 et Debian 7.5.

Clonez simplement une branche précédente (j'ai utilisé 0.30.x):

git clone --branch 0.30.x https://github.com/letsencrypt/letsencrypt

Et utilisez l'option --no-self-upgrade lorsque vous exécutez letsencrypt. Dans mon cas:

./letsencrypt-auto certonly --no-self-upgrade --standalone -d mydomain.com

N'oubliez pas d'ajouter --no-self-upgrade à votre nouvelle tâche cron.

21
Felipe Alonso

Il semble que cela se passe dans le processus de mise à niveau de votre package certbot?

No module named pip.__main__; 'pip' is a package and cannot be directly executed

Cela pourrait être le résultat de Python rencontre un dossier nommé pip dans ses chemins d'inclusion avant de trouver le module pip réel. C'est un peu délicat à déboguer ceci (vous auriez besoin de savoir quels sont les chemins d'inclusion de Python dans ce contexte, puis recherchez-les pour le mauvais dossier), mais vous pouvez peut-être résoudre le problème en supprimant et en réinstallant le package certbot-auto.

(Votre version Debian est assez ancienne, mais pas la version certbot, et elle utilise virtualenv pour ses dépendances, donc ce n'est probablement pas ça.)

0

N'oubliez pas de redémarrer Apache à propos du problème de liaison au port 80: impossible de se lier à IPv4 ou IPv6.

0
Marcelo Delage

J'ai fait les 2 changements suivants dans le script certbot-auto et cela fonctionne

1er changement

pip_version = StrictVersion(check_output([python, '-m', 'pip', '--version'])

à

pip_version = StrictVersion(check_output(['pip', '--version'])

2e changement

command = [python, '-m', 'pip', 'install', '--no-index', '--no-deps', '-U']

à

command = ['pip', 'install', '--no-index', '--no-deps', '-U']
0
Techie