昨天一切都很好,但是今天,使用certbot-auto运行相同的命令来更新证书,我明白了:
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
我正在使用Debian 7.9 ...遇到相同问题的人?
答案 0 :(得分:16)
这是Ubuntu 12.04和Debian 7.5上的最新版本(> = 0.32.x)的问题。
只需克隆一个先前的分支(我使用0.30.x):
git clone --branch 0.30.x https://github.com/letsencrypt/letsencrypt
并在运行letencrypt时使用选项--no-self-upgrade
。就我而言:
./letsencrypt-auto certonly --no-self-upgrade --standalone -d mydomain.com
别忘了将--no-self-upgrade
添加到您的续订cron作业中。
答案 1 :(得分:2)
我在certbot-auto脚本中进行了以下2项更改,并且可以正常运行
第一个更改
pip_version = StrictVersion(check_output([python, '-m', 'pip', '--version'])
到
pip_version = StrictVersion(check_output(['pip', '--version'])
第二次更改
command = [python, '-m', 'pip', 'install', '--no-index', '--no-deps', '-U']
到
command = ['pip', 'install', '--no-index', '--no-deps', '-U']
答案 2 :(得分:0)
在升级certbot软件包的过程中似乎正在发生这种情况吗?
No module named pip.__main__; 'pip' is a package and cannot be directly executed
此可能是Python在查找实际pip模块之前在其包含路径中遇到名为pip
的文件夹的结果。调试它有点棘手(您需要找出此上下文中Python的包含路径,然后在其中查找不良文件夹),但是也许可以通过删除并重新安装certbot-auto软件包来解决问题
(您的Debian版本非常古老,但是certbot版本不是,并且它使用virtualenv作为其依赖项,所以可能不是那样。)
答案 3 :(得分:0)
不要忘记重新启动有关将端口绑定到问题80的apache:无法绑定到IPv4或IPv6。