"Модуль ssl в Python недоступний" під час встановлення пакета з pip3


122

Я встановив Python 3.4 та Python 3.6 на свою локальну машину успішно, але не можу встановити пакунки pip3.

Коли я виконую pip3 install <package>, я отримую таку помилку, пов’язану з SSL :

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting <package>
  Could not fetch URL https://pypi.python.org/simple/<package>/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping
  Could not find a version that satisfies the requirement <package> (from versions: )
No matching distribution found for <package>

Як я можу виправити встановлення Python3.x, щоб я міг встановлювати пакунки pip install <package>?


4
Ви явно встановили pip3 на своєму ubuntu за допомогою команди sudo apt-get install python3-pip??
Сідахмед

2
Будь ласка, спробуйте pip3 install --upgrade pipперегляньте, отримуєте ви те саме повідомлення чи ні.
herry

Відповіді:


92

Покрокове керівництво для встановлення Python 3.6 та pip3 в Ubuntu

  1. Встановіть необхідні пакети для Python та ssl: $ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

  2. Завантажте та розпакуйте "Python-3.6.8.tar.xz" з https://www.python.org/ftp/python/ у свій домашній каталог.

  3. Відкрийте термінал у цій директорії та запустіть: $ ./configure

  4. Створіть та встановіть: $ sudo make && sudo make install

  5. Встановіть пакети за допомогою: $ pip3 install package_name


4
Працював над "Raspbian GNU / Linux 9 (stretch)"
Октябрь

2
Дякую! Я збирався кругом, отримуючи python3, працюючи над Ubuntu 14.04, поки не знайшов цей список команд.
jerrylogansquare

2
Мій рятівник Ubuntu.
markroxor

6
Це працювало для мене. Велике дякую. Одна річ, яку я не міг обернути головою, чому б не почати з кроку 4 і лише "зробити; зробити встановлення" один раз?
Парафілійський страус

1
Працював в Ubuntu Beaver. Я використовував python3.7 та pip 19, завжди із проблемою SSL .....
eduardosufan

62

Якщо ви перебуваєте на Red Hat / CentOS:

# To allow for building python ssl libs
yum install openssl-devel
# Download the source of *any* python version
cd /usr/src
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
tar xf Python-3.6.2.tar.xz 
cd Python-3.6.2

# Configure the build w/ your installed libraries
./configure

# Install into /usr/local/bin/python3.6, don't overwrite global python bin
make altinstall

також працював на python 2.7. просто додайте make and make altinstall
Jabda

Якщо вам потрібен virtualenv, вам доведеться запустити sudo /usr/local/bin/pip3.7 встановити virtualenv. Дякую за цю відповідь!
технократ

Відмінно, у мене виникли проблеми з установкою python 2.7.13 для застарілого докерського зображення і потрібно openssl-develбуло запуститиpython2.7 get-pip.py
Felipe

59

Якщо ви перебуваєте у Windows та використовуєте anaconda, це працювало для мене:

Я спробував багато інших рішень, які не спрацювали (Зміни змінної середовища PATH ...)

Проблему можуть спричинити DLL-файли в папці Windows \ System32 (наприклад, libcrypto-1_1-x64.dll або libssl-1_1-x64.dll або інших), розміщених там іншим програмним забезпеченням.

Виправленням було встановлення openSSL з https://slproweb.com/products/Win32OpenSSL.html, що замінює dll більш новими версіями.


2
Я щойно його встановив. У списку програм, встановлених у моїй системі, у мене є три версії OpenSSL (дві 64-бітні версії та одна 32-бітна версія, хоча я перебуваю у 64-бітній системі). Я не знаю, що встановив їх усіх, тому залишив їх там.
juergi

1
Це було найбільш прямим рішенням, яке я знайшов після багатьох пошуків. Pip не працював через помилку OpenSSL. Spyder також вийшов з ладу при запуску через помилку "не можна імпортувати ім'я" HTTPSHandler "з" urllib.request "" помилки. Це було виділено для Windows 10 python 3 для мене. Коментуючи, сподіваючись, допоможе зв’язати рішення для людей, що гуглить, більшість найкращих результатів були старими та складними рішеннями.
Дік Макманус

8
Якщо ви перебуваєте у Windows та використовуєте Anaconda, просто використовуйте Anaconda Prompt, а не cmd, щоб запустити "встановлення файлів". Додаткових змін DLL / SSL не потрібно.
FatihAkici

1
@FatihAkici - Велике спасибі Це мені допомогло.
Раджу Пенумаца

2
Я збирався зламати свій комп’ютер, використовував pycharm на багатьох машинах і ОС, але на цьому новому вікні я встановив анаконду, і, здається, він зламав pip. Я переглядав, як 2 години, дякую тобі товариш. <3
Бенуа F

35

У мене була схожа проблема на OSX 10.11 через встановлення memcached, який встановив python 3.7 поверх 3.6.

ПОПЕРЕДЖЕННЯ: pip налаштовано з місцями, які потребують TLS / SSL, однак модуль ssl в Python недоступний.

Витратили години на відключення opensl, перевстановлення, зміну шляхів .. і нічого не допомогло. Зміна версії Opensl на стару версію зробила трюк:

brew switch openssl 1.0.2e

Я не бачив цієї пропозиції ніде в Інтернеті. Сподіваюся, це комусь служить.


3
У мене була така ж проблема з MacOS Catalina 10.5.4 (Beta), зараз це працює. Дякую!
Пітер Роземанн

14
Для мене це було brew switch openssl 1.0.2s. Але це було все. Ти врятував мене, дякую!
Антоніо

3
Пробуючи це, але він постійно говорить мені, що у opensl в підвалі немає версії "1.0.2e". openssl не має версії "1.0.2s" у льоху.
Джеймс Паркер

Антоніо, Джеймс: яка б ви не мали старшої версії. Мій підвал мав 1.0.2e, тому я використовував це. Я радий, що це допомогло.
dsomnus

4
Дуже дякую! Для мене ваше рішення переходу на більш стару версію opensslпрацював: brew switch openssl 1.0.2t я перебуваю на Mac OS Catalina 10.15.3. Сподіваюся, це допомагає.
viraj.kulkarni

25

Погодьтесь з відповіддю від mastaBlasta. Працювали для мене. Я зіткнувся з тією ж проблемою, що і з описом теми.

Навколишнє середовище: MacOS Sierra. І я використовую Homebrew.

Моє рішення:

  1. Перевстановіть openssl by brew uninstall openssl; brew install openssl
  2. Згідно з підказками, які дає Homebrew, зробіть наступне:

    echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
    export LDFLAGS="-L/usr/local/opt/openssl/lib"
    export CPPFLAGS="-I/usr/local/opt/openssl/include"

3
Дякую, хитрість є brew uninstall openssl, brew install openssl. Я спробував, brew reinstall opensslщо не мало ефекту. Але видалення / установка працює!
Джефф Тянь

6
довелося бігтиbrew uninstall --ignore-dependencies openssl
радісно срібло

16

У Ubuntu це може допомогти:

cd Python-3.6.2
./configure --with-ssl
make
sudo make install

4
Чому ми насправді для цього повинні будувати python з джерела? чи не існує рішення, яке працює зі стандартними розподілами python? Я б наївно сподівався, що додавання цього модуля стане можливим без зміни бінарного файлу python, для якого ми не завжди легко знаємо відповідне розташування джерела, у живій системі, що не встановлена ​​вперше.
matanster

Спробував це, нічого не змінив
usernumber

9
Я отримую попередження про те, що цей варіант не розпізнається
ma3oun

Мені довелося додати кілька команд «судо» до цих команд, але вони працювали там, де інші відповіді не змогли!
Пако Абато


5

Можливо, проблема викликана відсутністю бібліотеки.

Перш ніж встановити python 3.6, переконайтеся, що ви встановили всі бібліотеки, необхідні для python.

$ sudo apt-get install build-essential checkinstall 
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

Додаткові відомості про те, як встановити Python 3.6.0 на Ubuntu & LinuxMint


5

Якщо ви перебуваєте на OSX і компілювали python з джерела:

Встановіть openssl за допомогою варіння brew install openssl

Переконайтесь, що дотримуйтесь інструкцій, які дає вам налаштування свого CPPFLAGSта LDFLAGS. У моєму випадку я використовую openssl@1.1формулу brew, і мені потрібні ці 3 налаштування для процесу збирання python, щоб правильно зв’язатись із моєю бібліотекою SSL:

export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"
export PKG_CONFIG_PATH="/usr/local/opt/openssl@1.1/lib/pkgconfig"

Припустимо, що бібліотека встановлена ​​в цьому місці.


все одно те саме питання
Гаурав Паліваль

Спробуйте перевстановити pip
mastaBlasta

@GauravPaliwal, @mastaBlasta: Для мене перехід на старішу версію opensslпрацюю: brew switch openssl 1.0.2t я на Mac OS Catalina 10.15.3. Сподіваюся, це допомагає.
viraj.kulkarni

5

Я зіткнувся з тією ж проблемою і в Windows 10. Моя дуже специфічна проблема пов’язана з моєю установкою Anaconda. Я встановив Anaconda і під траєкторією Path/to/Anaconda3/, настає python.exe. Таким чином, я взагалі не встановив python, оскільки Anaconda включає python. При використанні пипа для установки пакетів, я знайшов той же звіт про помилку, pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available..

Рішення було наступним:

1) можна знову завантажити python на офіційному веб-сайті ;

2) Перейдіть до каталогу, де "Python 3.7 (64-bit).lnk" знаходиться

3) import sslіexit()

4) наприклад, введіть cmd "Python 3.7 (64-bit).lnk" -m pip install tensorflow.

Тут все налаштовано.


Не виправлення, але, безумовно, виконує роботу. Принаймні допомагає вам встановити відсутні файли. Що я зрозумів на своїй локальній машині, це те, що у мене були суперечливі записи в моїй змінній PATH для python (тобто. Anaconda 2.7 64-розрядна та Python 3.7 32-розрядна)
AP.

Щоб покращити цю відповідь, ви можете зберегти абсолютний шлях у змінній та запустити його як: cmd /c $py .\main.py( Powershell ) або cmd /c %py% .\main.py( Dos ). Це запустить його у вашій наявній оболонці і може бути написано сценарієм
AP.

5

Якщо ви перебуваєте у Windows та використовуєте Anaconda, ви можете спробувати запустити команду "pip install ..." у Anaconda Prompt замість cmd.exe, як пропонує тут користувач willliu1995 . Це було для мене найшвидшим рішенням, яке не потребує встановлення додаткових компонентів.


4

Я спробував БАГАТО шляхів вирішення цієї проблеми , і ніхто не наважується. Зараз я перебуваю на Windows 10.

Єдине, що працювало:

  • Видаліть Anaconda
  • Видалити Python (я використовував версію 3.7.3)
  • Встановіть Python ще раз (не забудьте перевірити опцію автоматичного додавання до PATH)

Потім я завантажив усі потрібні мені ліпки за допомогою PIP ... і працював!

Не знаю чому, або якщо проблема була якось пов’язана з Анаконда.


3

для користувачів варіння osx

з'явилася моя проблема, пов’язана з моєю установкою python, і вона була швидко вирішена шляхом перевстановлення python3 та pip. я думаю, що це почало недоброзичливо після оновлення ОС, але хто знає (на даний момент я перебуваю на Mac OS 10.14.6)

brew reinstall python3 --force
# setup pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
# installa pkg successfully 
pip install pandas

Дякую за цю відповідь! У моєму випадку проблеми почалися після оновлення до Каталіни (10.15.3), і я виявив, що ваш перший крок brew reinstall python3 --forceбув достатнім: pipзнову працював після цього, мені не потрібно було перевстановлюватись pip.
PLL

3

Ви можете зробити будь-яке з цих двох:

  1. Під час встановлення Anaconda виберіть опцію, щоб додати Anaconda до шляху .

або

  1. Знайдіть ці (повні) шляхи з інсталяційної папки Anaconda та додайте їх до змінної середовища :

\ Анаконда

\ Anaconda \ Бібліотека \ mingw-w64 \ bin

\ Анаконда \ Бібліотека \ usr \ бін

\ Анаконда \ Бібліотека \ смітник

\ Анаконда \ Сценарії

\ anaconda \ Бібліотека

\ anaconda \ condabin

Додайте вищевказані шляхи до системної змінної "Шлях", і вона більше не повинна показувати помилку :)


1
Однією з альтернатив є використання специфічного "anaconda-підказок", в якому ці змінні середовища налаштовані правильно.
Тула

2

У мене виникло те саме питання, і я зміг вирішити наступні кроки:

sudo yum install -y libffi-devel
sudo yum install openssl-devel
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
sudo tar xf Python-3.7.1.tar.xz
cd Python-3.7.1
sudo ./configure --enable-optimizations
# Install into /usr/local/bin/python3.7, don't overwrite global python bin
sudo make altinstall

залежно від хімічної речовини, судо вам може не знадобитися.

Results:
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-10.0.1 setuptools-39.0.1

тепер повинен мати можливість бігати

python3.7 -V 

і

pip3.7 -V

Під час встановлення пакетів:

pip3.7 install pandas

або залежно від perms, ви також можете додати прапор --user так:

pip3.7 install pandas --user

2

sslМодуль є TLS / SSL обгортка для доступу до операції Sytem (OS) гніздо ( Lib / ssl.py ). Отже, коли sslмодуль недоступний, є ймовірність того, що або у вас немає встановлених ОС OpenSSL-бібліотек, або ці бібліотеки не були знайдені під час встановлення Python. Припустимо, це пізніший випадок (він же: у вас уже встановлено OpenSSL, але вони невірно пов’язані під час встановлення Python).

Я також припускаю, що ви встановлюєте з джерела. Якщо ви встановлюєте з двійкового (тобто: файлу Window .exe) або пакета (Mac .dmg або Ubuntu apt), з процесом встановлення ви не можете багато чого зробити.

Під час кроку налаштування вашої програми python вам потрібно вказати, де OS OpenSSL буде використовуватися для посилання:

# python 3.8 beta
./configure --with-openssl="your_OpenSSL root"

То де ви знайдете встановлений каталог OpenSSL?

# ubuntu 
locate ssl.h | grep '/openssl/ssl.h'

/home/user/.linuxbrew/Cellar/openssl/1.0.2r/include/openssl/ssl.h
/home/user/envs/py37/include/openssl/ssl.h
/home/user/miniconda3/envs/py38b3/include/openssl/ssl.h
/home/user/miniconda3/include/openssl/ssl.h
/home/user/miniconda3/pkgs/openssl-1.0.2s-h7b6447c_0/include/openssl/ssl.h
/home/user/miniconda3/pkgs/openssl-1.1.1b-h7b6447c_1/include/openssl/ssl.h
/home/user/miniconda3/pkgs/openssl-1.1.1c-h7b6447c_1/include/openssl/ssl.h
/usr/include/openssl/ssl.h

Ваша система може відрізнятися від моєї, але, як ви бачите тут, у мене багато різних встановлених бібліотек openssl. На момент написання цього повідомлення, python 3.8 очікує openssl 1.0.2 або 1.1:

Python вимагає OpenSSL 1.0.2 або 1.1 сумісного libssl з X509_VERIFY_PARAM_set1_host ().

Тому вам потрібно буде перевірити, яку з встановлених бібліотек ви можете використовувати, наприклад, для посилання

/usr/bin/openssl version

OpenSSL 1.0.2g  1 Mar 2016
./configure --with-openssl="/usr"
make && make install

Можливо, вам доведеться спробувати декілька або встановити нову, щоб знайти бібліотеку, яка б працювала для вашого Python та вашої ОС.


1

У моєму випадку з використанням Mac я видалив /Applications/Python 3.7. тому що я вже мав Python3.7 відbrew install python3 .

Але це було тригером повідомлення

pip налаштовано з місцями, які вимагають TLS / SSL, однак модуль ssl в Python недоступний.

Що я робив у своїй ситуації

  1. Я знову завантажив 64-бітний інсталятор macOS та встановив.
  2. Двічі клацніть /Applications/Python3.6/Install Certificates.commandі /Applications/Python3.6/Update Shell Profile.command.
  3. Перезавантажте mac
  4. І я не впевнений, але, можливо, це сприяло успіху pip.conf. Див. Помилки установки pip .

1

Я врешті вирішую це питання. Ось подробиці моєї env:
Версія Python для встановлення: 3.6.8
ОС: Ubuntu 16.04.6 LTS
Root access: Ні

Деякі люди пропонують встановити libssl-dev, але це не працювало для мене. Я переходжу за цим посиланням і я його виправив!
Коротше кажучи, я завантажую, витягую, збираю та встановлюю OpenSSL (openssl-1.1.1b.tar.gz). Потім я змінюю .bashrcфайл, перейшовши за цим посиланням .
Далі завантажую та витягую Python-3.6.8.tgz. Я редагую Modules / Setup.dist, щоб змінити шлях SSL (рядки навколо # 211). Я зробив ./configure --prefix=$HOME/opt/python-3.6.8, makeі make install. Останнє, я модифікую своє .bashrc. Зверніть увагу , що я не включаю --enable-optimizationsв ./configure.


0

На macos, налаштувати python 3.8.1 за допомогою команди нижче, це вирішить проблему, я думаю, це також працювало б на Linux.

./configure --enable-optimizations --with-openssl=/usr/local/opt/openssl@1.1/

змінити параметр dir на основі вашої системи.


0

Якщо ви перебуваєте на OSX і якщо інші рішення не працювали для вас (як і я).

Ви можете спробувати видалити python3 та оновити pip3

brew uninstall --ignore-dependencies python3
pip3 install --upgrade pip   

Це працювало для мене;)


0

(НЕ в Windows!)

Це змусило мене виривати волосся протягом тижня, тож сподіваюся, що це комусь допоможе

Я спробував усе, що не довелося перевстановити Anaconda та / або Jupyter.

Налаштування

  • AWS Linux
  • Вручну встановлена ​​Anaconda 3-5.3.0
  • Python3 (3.7) працював всередині анаконди (тобто ./anaconda3/bin/python )
  • було також /usr/bin/pythonі /usr/bin/python3(але вони не використовувалися, оскільки велика частина роботи виконувалася в терміналі Юпітера)

Виправити

У терміналі Юпітера:

cp /usr/lib64/libssl.so.10 ./anaconda3/lib/libssl.so.1.0.0

cp /usr/lib64/libcrypto.so.10 ./anaconda3/lib/libcrypto.so.1.0.0

Що це спровокувало?

Отже, це все працювало, поки я не спробував це зробити conda install conda-forge

Я не впевнений, що сталося, але конда повинна бути оновлена opensslна коробці (я здогадуюсь), тому після цього все зламалося.

В основному, невідомий мені, conda оновив openssl, але якось видалив старі бібліотеки і замінив її на libssl.so.1.1і libcrypto.so.1.1.

Python3, я думаю, був складений для пошуку libssl.so.1.0.0

Зрештою, ключовим для діагностики було таке:

python -c "import ssl; print (ssl.OPENSSL_VERSION)"

дав підказку library "libssl.so.1.0.0" not found

Я зробив величезне припущення, що yumверсія ssl є такою ж, як і condaверсія, тому просто перейменування спільного об'єкта може спрацювати, і це було.

Іншим моїм рішенням було перекомпілювати python, перевстановити анаконда тощо, але врешті-решт я радий, що мені цього не потрібно було.

Сподіваюся, це допоможе вам, хлопці, вийти.


0

У разі використання pyenvдля керування установками python на Mac OS Catalina, мені довелося спочатку встановити opensslз brew, а потім після цього запуску, pyenv install 3.7.8який, здавалося, будував установку python, використовуючи opensslз homebrew (про це навіть було сказано у виході інсталяції). Тоді pyenv global 3.7.8і я був у відсутності.


0

Мені вдалося виправити це, оновивши версію python у цьому файлі. pyenv: версія `3.6.5 'не встановлена ​​(встановлена ​​/Users/taruntarun/.python-version) Хоча в мене була встановлена ​​остання версія, моя команда все ще використовувала стару версію 3.6.5

Перехід до версії 3.7.3


-1

У мене були ті ж проблеми протягом останніх двох днів, і тільки зараз це виправили.

Я намагався використовувати --trust-hostпараметр з DigiCert_High_Assurance_EV_Root_CA.pemне працював, я не міг встановити модуль ssl (він говорить, що він не може бути встановлений для версій python більше 2,6), встановлення $PIP_CERTзмінної не виправляло її, і я мав libssl1.0.2і libssl1.0.0встановив. Також варто згадати, що у мене не було ~/.pip/pip.confфайлу, і його створення також не вирішило помилку.

Що остаточно вирішило це, було встановити python3.6 з makeзнову. Завантажити Python-3.6.0.tgz з веб - сайту, запустити configureпотім make, make testі make install. Сподіваюся, це працює для вас.


2
Вибачте, але довелося подати заявку через це, просто заявивши повторити ті самі кроки, що спричинили цю помилку. Я не знаю, як би ви розраховували запускати одні й ті ж команди в тому ж джерелі python і отримувати різні результати!
Джеймі Ліндсі

-1

Документація python насправді дуже зрозуміла, і, дотримуючись інструкцій, було зроблено роботу, тоді як інші відповіді, які я знайшов тут, не вирішили цю проблему.

  1. спочатку встановіть python 3.xx з джерела, використовуючи, наприклад, версію 3.6.2 https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz

  2. переконайтесь, що у вас встановлено openssl, запустивши brew install openssl

  3. розпакуйте його та перейдіть до каталогу python: tar xvzf Python-3.6.2.tar.xz && cd Python-3.6.2

  4. тоді, якщо версія python <3,7, запустіть

CPPFLAGS="-I$(brew --prefix openssl)/include" \ LDFLAGS="-L$(brew --prefix openssl)/lib" \ ./configure --with-pydebug 5. нарешті, запустіть make -s -j2( -sце тихий прапор, -j2каже вашій машині використовувати 2 завдання)


j - мнемонічне для "робочих місць", тобто кількість процесів, що протікають паралельно запускати збірку. Що стосується прапора s, він все ще видає попередження, але без додаткового шуму рівнів інформації / налагодження. Ці прапори використовуються в інструкціях докторів python.
pglaser

-1

У мене була така ж проблема, що намагалася встановити python3.7 на машину ubuntu14.04. Проблема полягала в тому, що у мене були деякі власні папки в моєму PKG_CONFIG_PATH та в моєму LD_LIBRARY_PATH, що заважало процесу збирання python знаходити системні бібліотеки opensl.

тому спробуйте очистити їх і побачити, що станеться:

export PKG_CONFIG_PATH=""
export LD_LIBRARY_PATH=""

2
Це насправді зіпсує чийсь день, якщо у них є корисні речі в тих змінних середовищах
matanster

-1

Гаразд остання відповідь на це, на сьогоднішній день не використовуйте Python 3.8 , використовуйте лише 3.7 або менше, оскільки більшість бібліотек не вдається встановити з вищевказаною помилкою


Наскільки мені відомо, python використовує основні пакети операційної системи. Такі речі , як gcc, opensslі zlib. Тому важливо встановити ці передумови перед компіляцією python, особливо коли використовується на Linux.
Стефан

@ surfer190 Я використовую Windows, але те, що ви сказали, може бути правдивим для обох, мабуть
Ujju
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.