أستخدم nginx على centos 7.3 ، هناك خطأ عند تشغيل certbot --nginx
:
ImportError: No module named 'requests.packages.urllib3'
[root<strong i="9">@demo</strong> src]# certbot --nginx
Traceback (most recent call last):
File "/usr/bin/certbot", line 9, in <module>
load_entry_point('certbot==0.14.1', 'console_scripts', 'certbot')()
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 564, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2662, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2316, in load
return self.resolve()
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2322, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/usr/lib/python2.7/site-packages/certbot/main.py", line 14, in <module>
from certbot import account
File "/usr/lib/python2.7/site-packages/certbot/account.py", line 17, in <module>
from acme import messages
File "/usr/lib/python2.7/site-packages/acme/messages.py", line 4, in <module>
from acme import challenges
File "/usr/lib/python2.7/site-packages/acme/challenges.py", line 10, in <module>
import requests
File "/usr/lib/python2.7/site-packages/requests/__init__.py", line 58, in <module>
from . import utils
File "/usr/lib/python2.7/site-packages/requests/utils.py", line 32, in <module>
from .exceptions import InvalidURL
File "/usr/lib/python2.7/site-packages/requests/exceptions.py", line 10, in <module>
from .packages.urllib3.exceptions import HTTPError as BaseHTTPError
File "/usr/lib/python2.7/site-packages/requests/packages/__init__.py", line 95, in load_module
raise ImportError("No module named '%s'" % (name,))
ImportError: No module named 'requests.packages.urllib3'
الحزم:
[root<strong i="13">@demo</strong> src]# pip list
acme (0.14.1)
backports.ssl-match-hostname (3.4.0.2)
certbot (0.14.1)
certifi (2017.7.27.1)
cffi (1.6.0)
chardet (3.0.4)
Cheetah (2.4.4)
cloud-init (0.7.6)
ConfigArgParse (0.11.0)
configobj (4.7.2)
cryptography (1.3.1)
decorator (3.4.0)
enum34 (1.0.4)
future (0.16.0)
idna (2.6)
iniparse (0.4)
ipaddress (1.0.16)
IPy (0.75)
Jinja2 (2.9.6)
jsonpatch (1.16)
jsonpointer (1.10)
kitchen (1.1.1)
Markdown (2.6.8)
MarkupSafe (1.0)
mock (1.0.1)
ndg-httpsclient (0.3.2)
oauth (1.0.1)
parsedatetime (1.5)
perf (0.1)
pip (9.0.1)
ply (3.4)
policycoreutils-default-encoding (0.1)
prettytable (0.7.2)
psutil (2.2.1)
pyasn1 (0.1.9)
pycparser (2.14)
pycurl (7.19.0)
pygobject (3.14.0)
pygpgme (0.3)
pyliblzma (0.5.3)
pyOpenSSL (0.13.1)
pyparsing (1.5.6)
pyRFC3339 (1.0)
python2-pythondialog (3.3.0)
pytz (2012d)
pyudev (0.15)
pyxattr (0.5.1)
PyYAML (3.12)
requests (2.18.4)
seobject (0.1)
sepolicy (1.1)
setuptools (36.2.7)
six (1.9.0)
slip (0.4.0)
slip.dbus (0.4.0)
urlgrabber (3.10)
urllib3 (1.22)
yum-axelget (1.0.4)
yum-metadata-parser (1.1.4)
zope.component (4.1.0)
zope.event (4.0.3)
zope.interface (4.0.5)
ماذا علي أن أفعل؟
كيف قمت بتثبيت certbot؟
من المحتمل أن يؤدي تثبيت urllib3 إلى إصلاحه - ولكن قد تكون هناك طريقة أسهل. على سبيل المثال ، يتم تعبئتها على شكل rpm ، وهي الطريقة المفضلة على الأرجح لتثبيتها على centos: https://www.rpmfind.net/linux/rpm2html/search.php؟query=python-urllib3
لكن من المدهش أنه لم يتم تثبيت هذا على أنه تبعية. هل قمت بتثبيت certbot من مدير الحزم الخاص بك؟ هل اتبعت هذه التعليمات؟ https://certbot.eff.org/#centosrhel7 -nginx
SwartzCr نعم ، لقد فعلت ذلك باتباع https://certbot.eff.org/#centosrhel7 -nginx
هل يمكنك محاولة تحديث إصداراتك من الطلبات وستة كما هو مذكور في # 4886 - أعتقد أنها نفس المشكلة. erikrose هل هذا موقف نحتاج فيه إلى تقديم شيء ما في المنبع إلى CentOS أو RHEL؟
يبدو أن لديه أحدث إصدار من الطلبات بالفعل ، وستة موجودة ، لذا فهو وضع مختلف عن # 4884.
في CentOS 7 ، الطريقة الوحيدة للحصول على urllib3 (1.22) هي استخدام تثبيت النقطة. إصدار yum مع epel قديم جدًا: python-urllib3.noarch 0: 1.10.2-3.el7 ويؤدي إلى خطأ إصدار خاطئ. ولكن ، بعد تثبيت certbot-apache مع urllib3 v.1.22 في مكانه ، ستحصل على هذا عند تشغيل certbot --apache :
ImportError: No module named 'requests.packages.urllib3'
أعتقد أن لدي جميع الحزم الأحدث:
certbot (0.18.1)
certbot-apache (0.18.1)
certifi (2017.7.27.1)
pycurl (7.19.0)
requests (2.18.4)
six (1.11.0)
urlgrabber (3.10)
urllib3 (1.22)
تحديث. يبدو أن هذا قد أصلحه ...
pip install requests urllib3 pyOpenSSL --force --upgrade
ولكن بعد ذلك تحصل على هذا عند تشغيل certbot --apache :
AttributeError: 'module' object has no attribute 'rand'
رؤية نفس المشكلة على تثبيت جديد تمامًا لـ Centos 7.3. حاول أيضًا تثبيت python2-certbot
، وظهرت لك رسالة الخطأ certbot-2 --standalone
.
لقد حاولت تثبيت إصدار أقدم ، 0.14.0 ، حصل على نفس الخطأ. ذهبت في الطريق اليدوي ، ونجح ذلك ، وحصلت على شهادة بنجاح.
wardmundy و akosveres تم إصلاح مشكلة rand في https://github.com/certbot/certbot/commit/7f5f6471fea939c70294c2f31875d90320482861
وسيتم إصداره قريبًا في إصدار bugfix برقم الإصدار 0.18.2
كان السبب في ذلك هو إهمال openssl لدعمه للراند قبل الموعد المحدد كما هو موضح هنا: https://github.com/certbot/certbot/pull/5112#issuecomment -331046450
هل لا يزال الناس يعانون من مشاكل urllib3؟
حاولت تثبيت certbot على Centos 7 اليوم. أتابع https://certbot.eff.org/#centosrhel7 هذا خطوة بخطوة.
عندما أحاول تشغيل sudo certbot certonly
أخبرني أن urllib3 غير موجود
بعد تشغيل pip install requests urllib3 pyOpenSSL --upgrade
تغيير رسالة الخطأ إلى
ImportError: تفتقد الوحدة النمطية 'pyOpenSSL' الوظيفة المطلوبة. حاول الترقية إلى الإصدار v0.14 أو أحدث.
حصلت على نفس الخطأ مثل DeronLee .
أي شيء جديد؟
jcguevara أخيرًا وجدت أن أفضل طريقة هي استخدام عامل الإرساء
على الأقل في بعض هذه الحالات ، أشك في بيئات Python التالفة حيث تم تثبيت الحزم pip
، متجاوزة إصدارات الحزم التي يوفرها نظام التشغيل الخاص بك. نوصي بشدة بعدم القيام بذلك.
إذا كنت قد وجدت نفسك بالفعل في هذا المنصب ، فإنني أوصيك باستخدام
DeronLee شكرا على نصيحتك.
لقد قمت بحله بمجرد تنزيله مباشرة من GitHub وتشغيل certbot-auto كما أوصى bmw .
jcguevara شكرا. وسأحاول في وقت لاحق.
يعمل cerbot-auto بشكل مدهش! لماذا يوجد الكثير من الأدوات الإضافية للقيام بذلك؟ (ˇˍˇ)
mac osx
+ Python2.7.13
openssl
.0.9.8zh 14 Jan 2016
.brew install openssl
، فإن الإصدار الحالي هو stable 1.0.2l
.brew install [email protected]
، فإن هذا الإصدار سيتسبب في مشكلة No Module Found Urllib3
.
brew uninstall [email protected]
# openssl: stable 1.0.2l
brew install openssl
Urllib3
تم حل المشكلة.بعد تشغيل هذا الأمر
pip install requests urllib3 pyOpenSSL --force --upgrade
كما قال DeronLee :
تغيير رسالة الخطأ إلى
ImportError: تفتقد الوحدة النمطية 'pyOpenSSL' الوظيفة المطلوبة. حاول الترقية إلى الإصدار v0.14 أو أحدث.
لقد قمت بتثبيت الإصدار 16.2.0 من pyOpenSSL وعمل معي.
pip install pyOpenSSL==16.2.0
شكر. أحاول تثبيت أحدث إصدار ولكن لا يعمل. ربما أنا
يجب أن تجرب الإصدار الخاص
في 11 تشرين الثاني (نوفمبر) 2017 ، الساعة 1:04 صباحًا ، "Nguyễn Thanh Tiến" [email protected]
كتب:
بعد تشغيل هذا الأمر
طلبات تثبيت النقطة urllib3 pyOpenSSL --force --upgradeكما قال DeronLee https://github.com/deronlee :
تغيير رسالة الخطأ إلى
ImportError: تفتقد الوحدة النمطية 'pyOpenSSL' الوظيفة المطلوبة. محاولة
الترقية إلى الإصدار v0.14 أو أحدث.لقد قمت بتثبيت الإصدار 16.2.0 من pyOpenSSL وعمل معي.
نقطة تثبيت pyOpenSSL == 16.2.0-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/certbot/certbot/issues/5104#issuecomment-343529478 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/ALj8rHCKhYhwrgCEfvzwVaveagxIVMmtks5s1IIBgaJpZM4PUFnt
.
@ thanhtien522
شكر. أحاول تثبيت أحدث إصدار ولكن لا يعمل. ربما يجب أن أجرب الإصدار الخاص
DeronLee هل يمكن أن تخبرني:
pip freeze
؟SwartzCr لدي نفس المشكلة معDeronLee
لذا أدير الأمر
pip install requests urllib3 pyOpenSSL --force --upgrade
ولدي خطأ مثل هذا:
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.
ثم جربت ما ذكره @ thanhtien522 قيد التشغيل
pip install pyOpenSSL==16.2.0
لكنها ما زالت لا تعمل بالنسبة لي ، ما زلت أتلقى نفس الخطأ الذي يخبرني أن pyOpenSSL
مفقود.
PRETTY_NAME="CentOS Linux 7 (Core)"
certbot.noarch 0.19.0-1.el7 @epel
yum install certbot-nginx
pip freeze
موضحة أدناهacme==0.19.0
asn1crypto==0.23.0
backports.ssl-match-hostname==3.4.0.2
certbot==0.19.0
certbot-nginx==0.19.0
certifi==2017.11.5
cffi==1.11.2
chardet==3.0.4
Cheetah==2.4.4
cloud-init==0.7.6
ConfigArgParse==0.11.0
configobj==4.7.2
cryptography==2.1.4
decorator==3.4.0
enum34==1.1.6
future==0.16.0
idna==2.6
iniparse==0.4
ipaddress==1.0.18
IPy==0.75
Jinja2==2.9.6
jsonpatch==1.16
jsonpointer==1.12
kitchen==1.1.1
Markdown==2.6.9
MarkupSafe==1.0
mock==1.0.1
ndg-httpsclient==0.3.2
oauth==1.0.1
parsedatetime==1.5
perf==0.1
ply==3.4
policycoreutils-default-encoding==0.1
prettytable==0.7.2
psutil==2.2.1
pyasn1==0.1.9
pycparser==2.18
pycurl==7.19.0
pygobject==3.22.0
pygpgme==0.3
pyliblzma==0.5.3
pyOpenSSL==16.2.0
pyparsing==1.5.6
pyRFC3339==1.0
python-linux-procfs==0.4.9
python2-pythondialog==3.3.0
pytz==2016.10
pyudev==0.15
pyxattr==0.5.1
PyYAML==3.12
requests==2.18.4
schedutils==0.4
seobject==0.1
sepolicy==1.1
six==1.11.0
slip==0.4.0
slip.dbus==0.4.0
urlgrabber==3.10
urllib3==1.22
yum-metadata-parser==1.1.4
zope.component==4.1.0
zope.event==4.0.3
zope.interface==4.0.5
يبدو أننا نحتاج في المقام الأول إلى رفع إصدار pyOpenSSL الذي نعتمد عليه للحصول على certbot في centos ، وإليك ما أحصل عليه عند تثبيت جديد:
Dependencies Resolved
==================================================================================================
Package Arch Version Repository Size
==================================================================================================
Installing:
python2-certbot-nginx noarch 0.19.0-1.el7 epel 53 k
Installing for dependencies:
certbot noarch 0.19.0-1.el7 epel 20 k
dialog x86_64 1.2-4.20130523.el7 base 208 k
pyOpenSSL x86_64 0.13.1-3.el7 base 133 k
pyparsing noarch 1.5.6-9.el7 base 94 k
python-cffi x86_64 1.6.0-5.el7 base 218 k
python-enum34 noarch 1.0.4-1.el7 base 52 k
python-idna noarch 2.4-1.el7 base 94 k
python-ipaddress noarch 1.0.16-2.el7 base 34 k
python-ndg_httpsclient noarch 0.3.2-1.el7 epel 43 k
python-parsedatetime noarch 1.5-3.el7 epel 61 k
python-ply noarch 3.4-11.el7 base 123 k
python-pycparser noarch 2.14-1.el7 base 104 k
python-zope-component noarch 1:4.1.0-3.el7 epel 227 k
python-zope-event noarch 4.0.3-2.el7 epel 79 k
python-zope-interface x86_64 4.0.5-4.el7 base 138 k
python2-acme noarch 0.19.0-1.el7 epel 176 k
python2-certbot noarch 0.19.0-1.el7 epel 471 k
python2-configargparse noarch 0.11.0-1.el7 epel 30 k
python2-cryptography x86_64 1.7.2-1.el7_4.1 updates 502 k
python2-dialog noarch 3.3.0-6.el7 epel 94 k
python2-future noarch 0.16.0-2.el7 epel 799 k
python2-mock noarch 1.0.1-9.el7 epel 92 k
python2-psutil x86_64 2.2.1-3.el7 epel 116 k
python2-pyasn1 noarch 0.1.9-7.el7 base 100 k
python2-pyrfc3339 noarch 1.0-2.el7 epel 13 k
pytz noarch 2016.10-2.el7 base 46 k
حيث من المحتمل أن يكون الإصدار أعلى من 0.14
ما قد يعني أن شخصًا ما يحتاج إلى حزمها لـ centos -bmw هو hogarthj الشخص الذي يجب أن أتصل به بشأن ذلك؟
نعم ، hogarthj هي جهة اتصال التعبئة والتغليف Red Hat / Fedora ولكنها أكثر استجابة عبر البريد الإلكتروني. يسعدني أن أقدم لكم في وقت ما ، لكن لا أعتقد أن هناك أي تغييرات مطلوبة من جانبه هنا.
CentOS 7 هي واحدة من أكثر منصاتنا شيوعًا ونختبر بانتظام على CentOS 7 دون مشكلة. أبلغ معظم الأشخاص في هذا الموضوع عن طلبات 2.18.x. الطلبات 2.6.0 مدرجة في CentOS 7 repos. إذا قمت بخلط حزم Python من نظام التشغيل الخاص بك و pip
، فستقضي وقتًا سيئًا.
يمكن للأشخاص في CentOS 7 الذين لديهم هذه المشكلة حل المشكلة عن طريق التراجع عن التغييرات التي تم إجراؤها على حزم Python الخاصة بهم من خلال pip
أو باستخدام certbot-auto الذي يعمل على حل المشكلة من خلال عدم الاعتماد على حزم Python المثبتة على نظامك .
لقد اتبعت هذه التعليمات (الإصدار الخاص بي من urllib3 لم يعمل جيدًا) ومن ثم يمكن تنفيذ certbot ... نأمل أن يساعد ذلك.
أنا متأكد من أنه يمكن طيها في أوامر أقل ...
طلبات إلغاء التثبيت
نقطة إلغاء urllib3
yum إزالة python-urllib3
yum إزالة طلبات python
yum تثبيت python-urllib3
yum تثبيت طلبات python
yum تثبيت certbot
لقد جربته ، استخدم هذه الأوامر ، وهو يعمل!
pip uninstall requests
pip uninstall urllib3
yum remove python-urllib3
yum remove python-requests
yum install python-urllib3
yum install python-requests
yum install certbot
yum install docker-compose
هل يمكننا استخدام النقطة لاحقًا في المستقبل بعد استخدام yum؟
sreezree ، يجب ألا تستخدم النقطة لتثبيت الحزم ذات الصلة بـ certbot لأنها ستتعارض مع الحزم التي يقوم certbot بتثبيتها
لا تعمل أي من هذه الطرق المذكورة أعلاه بالنسبة لي ، تظل رسالة الخطأ كما هي. ImportError: No module named 'requests.packages.urllib3'
واجهت نفس الخطأ في CentOS 7.4:
ImportError: لا توجد وحدة باسم "applications.packages.urllib3"
وحاولوا حل smalenfant المقترح. يعمل بشكل جميل.
لدي نفس الخطأ.
اكتشفت وجود خطأ عند تثبيت certbot
Installing : pytz-2016.10-2.el7.noarch 12/55
Installing : python2-parsedatetime-2.4-5.el7.noarch 13/55
Installing : python-urllib3-1.10.2-5.el7.noarch 14/55
Error unpacking rpm package python-urllib3-1.10.2-5.el7.noarch
error: unpacking of archive failed on file /usr/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname: cpio: rename
Installing : libsemanage-python-2.5-11.el7.x86_64 15/55
error: python-urllib3-1.10.2-5.el7.noarch: install failed
Installing : python-ndg_httpsclient-0.3.2-1.el7.noarch 16/55
Installing : python2-six-1.9.0-0.el7.noarch 17/55
error: unpacking of archive failed on file /usr/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname: cpio: rename
error: python-urllib3-1.10.2-5.el7.noarch: install failed
وأحاول إعادة تثبيته ثم حصلت على نفس الخطأ
# yum install python-urllib3
Error unpacking rpm package python-urllib3-1.10.2-5.el7.noarch
error: unpacking of archive failed on file /usr/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname: cpio: rename
Verifying : python-urllib3-1.10.2-5.el7.noarch 1/1
Failed:
python-urllib3.noarch 0:1.10.2-5.el7
Complete!
لقد فشل ولكن العرض النهائي Complete!
، كيف هو Complete!
؟
لذلك وجدت أصدقاء تيانشاو قالوا إنه يتعارض مع إصدار النقطة
https://blog.csdn.net/u013614281/article/details/76832818
وقمت بإلغاء تثبيت إصدار Pip وإصدار yum
pip uninstall urllib3
yum install python-urllib3
بعد ذلك تلقيت خطأ آخر
pkg_resources.DistributionNotFound: The 'urllib3<1.23,>=1.21.1' distribution was not found and is required by requests
إذن ، ما اللعنة ، أنا أبكي 😭
بعد ذلك حاولت
pip uninstall requests
yum remove python-requests
yum install python-requests
yum install certbot
ويعمل .....
لذلك أعتقد أن إصدار الطلبات لا يتطابق مع urllib3
لذلك حاولت في نفس آلة env
أولا إزالة طلبات و urllib3
pip uninstall requests
pip uninstall urllib3
yum remove python-urllib3
yum remove python-requests
تثبيت certbot
موافق
تمت طباعة هذا الخطأ بالفعل بسبب محاولة فاشلة .. الالتقاط في كود بايثون الداخلي للطلبات:
try:
import urllib3
except:
import requests.packages.urllib3
تحدث هذه المشكلة عندما يتعذر العثور على urllib3 ، ولكن أيضًا عندما يتعذر تحميل urllib3 لأي سبب من الأسباب.
يمكنك إزالة سيربوت القديم ، ثم محاولة تثبيته عن طريق النقطة. الذي يجب أن يعمل.
sudo pip install certbot
لقد جربته ، استخدم هذه الأوامر ، وهو يعمل!
pip uninstall requests pip uninstall urllib3 yum remove python-urllib3 yum remove python-requests yum install python-urllib3 yum install python-requests yum install certbot yum install docker-compose
رائع ، تم حل المشكلة!
يوصى بالتثبيت عن طريق
للتوضيح ، طريقة التثبيت الموصى بها على الأنظمة القائمة على RHEL 7 هي استخدام EPEL .
عادة ما تكون المشاكل في هذا الموضوع ناتجة عن تثبيت Python معطل بسبب الحزم المثبتة من pip
المتضاربة مع الحزم المثبتة من yum
. ستؤدي إزالة الحزم التي قمت بتثبيتها من خلال pip
حل المشكلة.
التعليق الأكثر فائدة
تحديث. يبدو أن هذا قد أصلحه ...
pip install requests urllib3 pyOpenSSL --force --upgrade