Certbot has problem setting up the virtual environment

PRETTY_NAME=“Debian GNU/Linux 9 (stretch)”
NAME=“Debian GNU/Linux”
VERSION_ID=“9”
VERSION=“9 (stretch)”
ID=debian
HOME_URL=“https://www.debian.org/
SUPPORT_URL=“https://www.debian.org/support
BUG_REPORT_URL=“https://bugs.debian.org/

No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.6 (stretch)
Release: 9.6
Codename: stretch

I’m having the same issue. I filed a bug here but it was closed without much explanation…

2 Likes

You are right. The bug should not have been closed.

I have reproduced the exact same failure on a completely fresh debian:stretch container.

2 Likes

I’m getting this on a renewal, never had a problem before.

NAME=“Ubuntu”
VERSION=“18.04.1 LTS (Bionic Beaver)”
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME=“Ubuntu 18.04.1 LTS”
VERSION_ID=“18.04”

Same problem here. I’ve tried a renewal and a fresh instance, both throwing the same error as OP:

NAME=“Amazon Linux AMI”
VERSION=“2018.03”
ID=“amzn”
ID_LIKE=“rhel fedora”
VERSION_ID=“2018.03”
PRETTY_NAME=“Amazon Linux AMI 2018.03”

This is a problem in pip. You can fix this for now by adding the --no-download flag to the calls to virtualenv on lines 1001 and 1003:

diff --git a/certbot-auto b/certbot-auto
index be2c367..2c0f64a 100755
--- a/certbot-auto
+++ b/certbot-auto
@@ -998,9 +998,9 @@ if [ "$1" = "--le-auto-phase2" ]; then
     rm -rf "$VENV_PATH"
     if [ "$PYVER" -le 27 ]; then
       if [ "$VERBOSE" = 1 ]; then
-        virtualenv --no-site-packages --python "$LE_PYTHON" "$VENV_PATH"
+        virtualenv --no-site-packages --no-download --python "$LE_PYTHON" "$VENV_PATH"
       else
-        virtualenv --no-site-packages --python "$LE_PYTHON" "$VENV_PATH" > /dev/null
+        virtualenv --no-site-packages --no-download --python "$LE_PYTHON" "$VENV_PATH" > /dev/null
       fi
     else
       if [ "$VERBOSE" = 1 ]; then
4 Likes

For those not familiar with how to apply diffs/patches, this one liner may be used to do the same thing (replace /path/to/certbot-auto with the path to your real certbot-auto file):

sed -i 's/virtualenv --no-site-packages/virtualenv --no-download --no-site-packages/' /path/to/certbot-auto
5 Likes

This worked for me. :white_check_mark::cat2::tornado:

1 Like

Thank you very much, this worked for me as well! Appreciate the prompt attention to the issue and providing a workaround.

1 Like

This worked for me as well. Thank you for the workaround!

1 Like

I’m afraid this workaround does not work for a fresh install if you are trying to use the tool for the first time.

A new version of pip fixing this issue was released an hour or two ago.

1 Like

That’s wonderful to hear. Can anyone point me in the right direction to download and install it?

Thanks!

Running certbot-auto again should automatically use it.

Thanks. I tried running it again (in my case letsencrypt-auto) on a fresh Ubuntu 16.04.5 LTS install on aws and I’m afraid the error is still the same.

1 Like

Probably a newb question, but how long should this change remain? Will it automatically be handled in the next update? thanks.

1 Like

Thanks ! I had the same issue as @melee1313 and this fixed it.

As a side note, in my system the file you mention is called “/opt/letsencrypt/letsencrypt-auto” and not “/opt/letsencrypt/certbot-auto”

1 Like

Thank You!!! This worked like a charm

1 Like

It might automatically be fixed now by pip’s release: https://github.com/pypa/pip/pull/6185, which includes https://github.com/pypa/pip/pull/6171

We also plan to fix Certbot so that it won’t be affected should this happen again: https://github.com/certbot/certbot/issues/6685

So if you manually make the change now, future versions of Certbot will automatically incorporate the change, on our end.

4 Likes

Same error HERE!!!

and fixed with erica’s solution

ty!!!

1 Like