Certbot: ImportError: لا توجد وحدة باسم "applications.packages.urllib3"

تم إنشاؤها على ١٢ سبتمبر ٢٠١٧  ·  37تعليقات  ·  مصدر: certbot/certbot

أستخدم 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)

ماذا علي أن أفعل؟

fedora / redhat / CentOS pkging debugging

التعليق الأكثر فائدة

تحديث. يبدو أن هذا قد أصلحه ...

pip install requests urllib3 pyOpenSSL --force --upgrade

ال 37 كومينتر

كيف قمت بتثبيت 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 بشكل مدهش! لماذا يوجد الكثير من الأدوات الإضافية للقيام بذلك؟ (ˇˍˇ)

السبب:

  • env: mac osx + Python2.7.13
  • يجب أن تتحققوا يا رفاق من إصدار openssl .
  • إصدار openssl الافتراضي لنظام التشغيل Mac هو 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 هل يمكن أن تخبرني:

  • ما هو إصدار نظام التشغيل الذي تستخدمه؟
  • ما هو إصدار Certbot الذي قمت بتثبيته؟
  • كيف قمت بتثبيت Certbot
  • ناتج 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: certbot.noarch 0.19.0-1.el7 @epel
  • تثبيت Certbot عن طريق تشغيل 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 حل المشكلة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات