Питон AttributeError: 'модуль' объект не имеет атрибут 'SSL_ST_INIT'

Скрипт Python из шахты не в состоянии с:

Traceback (most recent call last):
  File "./inspect_sheet.py", line 21, in <module>
    main()
  File "./inspect_sheet.py", line 12, in main
    workbook_name=workbook_name,
  File "./google_sheets.py", line 56, in __init__
    self.login()
  File "./google_sheets.py", line 46, in login
    self.client = gspread.authorize(credentials)
  File "/usr/local/lib/python2.7/site-packages/gspread/client.py", line 335, in authorize
    client.login()
  File "/usr/local/lib/python2.7/site-packages/gspread/client.py", line 98, in login
    self.auth.refresh(http)
  File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 598, in refresh
    self._refresh(http.request)
  File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 769, in _refresh
    self._do_refresh_request(http_request)
  File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 795, in _do_refresh_request
    body = self._generate_refresh_request_body()
  File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 1425, in _generate_refresh_request_body
    assertion = self._generate_assertion()
  File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 1554, in _generate_assertion
    private_key, self.private_key_password), payload)
  File "/usr/local/lib/python2.7/site-packages/oauth2client/crypt.py", line 162, in from_string
    from OpenSSL import crypto
  File "/usr/local/lib/python2.7/site-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import rand, crypto, SSL
  File "/usr/local/lib/python2.7/site-packages/OpenSSL/SSL.py", line 118, in <module>
    SSL_ST_INIT = _lib.SSL_ST_INIT
AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
Комментарии к вопросу (1)

Обновление pyopenssl с Pip не работает ни одна из команд, относящихся к типун работал для меня. При обновлении pyopenssl с easy_install, выше проблема может быть решена.

sudo python -m easy_install --upgrade pyOpenSSL

кредит @разделитель (ответ)

Комментарии (2)
Решение

Оказалось, проблема с моей установки pyOpenSSL, pyOpenSSL-0.15.1 .

Я сделал:

pip uninstall pyopenssl

а потом

pip install pyopenssl

...и мой Python скрипт снова работает!

Комментарии (7)

Обновить pyopenssl модуль:

$ sudo pip install -U pyopenssl
Комментарии (2)

У меня была похожая ошибка:

    from OpenSSL import rand, crypto, SSL
  File "/usr/local/lib/python3.5/dist-packages/OpenSSL/SSL.py", line 112, in 
    SSL_ST_INIT = _lib.SSL_ST_INIT
AttributeError: module 'lib' has no attribute 'SSL_ST_INIT'

и ни один из других ответов можно было бы починить, потому что Пип не мог ничего установить. Вместо того, что я сделал это из терминала первого:

sudo rm -r /usr/local/lib/python3.5/dist-packages/OpenSSL

Затем переустановить pyopenssl с Pip:

sudo pip install pyopenssl

и все было подливку.

Комментарии (1)

Попробуйте следующие команды:

easy_install -U pip
easy_install -U pyOpenSSL
Комментарии (0)

Недавно я испытал тот же вопрос, и после нескольких часов исследования, я узнал, что он был вызван новый шифрование 2.0 обновление. Это обновление будет сломать много пакетов с помощью pyopenssl (как часовой, в Google Analytics и т. д.). Просто понизить его до 1,9 решит проблему.

Будьте осторожны, если вы используете "и установить -у Пип", он будет автоматически обновлять пакеты, которые не перечислены в requirements.txt.

Комментарии (1)

В моем случае, проблема заключалась в том, что пакет был установлен в корень каталоги, и я выполнял скрипт, который попросил `pyopenssl с моего пользователя Linux forvas. И что пользователь может'т использовать библиотеки, установленные в корень.

Поэтому сначала мне пришлось снять пакет с профпригодность или APT-получить.

sudo aptitude purge python-openssl

Поэтому мне пришлось снова установить пакет, но с учетом пользователя, запускающего скрипт, который запрашивает библиотеки. Взгляните туда, где библиотеки устанавливается в зависимости от пользователей Linux и аргумент --пользователь из типун.

Корпус 1

forvas@server:$ pip install pyopenssl

не может установить пакеты из-за EnvironmentError:

[значение errno 13] доступ запрещен: '/usr/местные/библиотека/вместо python2.7/дист-пакеты/пакет'

рекомендуется использовать опцию `--пользователя или проверить разрешения.

Случай 2

forvas@server:$ sudo pip install pyopenssl

/usr/местные/библиотека/вместо python2.7/дист-пакеты/библиотеки/*

/usr/местные/библиотека/вместо python2.7/дист-пакеты/pyOpenSSL-17.5.0.дист-информация/*

Случай 3

forvas@server:$ sudo pip install --user pyopenssl

/домой/forvas/.местные/библиотека/вместо python2.7/сайт-пакеты/библиотеки/*

/домой/forvas/.местные/библиотека/вместо python2.7/сайт-пакеты/pyOpenSSL-17.5.0.дист-информация/*

Случай 4

root@server:$ pip install pyopenssl

/usr/местные/библиотека/вместо python2.7/дист-пакеты/библиотеки/*

/usr/местные/библиотека/вместо python2.7/дист-пакеты/pyOpenSSL-17.5.0.дист-информация/*

Корпус 5

root@server:$ pip install --user pyopenssl

//корень.местные/библиотека/вместо python2.7/сайт-пакеты/библиотеки/*

//корень.местные/библиотека/вместо python2.7/сайт-пакеты/pyOpenSSL-17.5.0.дист-информация/*

Вывод

Моя проблема была в том, что библиотека была установлена в каталогах дела 5.

Решение

  • Удаление пакета.

  • Как я'м выполнение скрипта в Linux пользователю forvas, мне удалось переустановить пакет правильно с нужным 2 или 4 (в которой библиотека доступна для всех пользователей Linux) или более точный вариант 3 (в которой библиотека доступна только для Linux пользователей forvas).

Комментарии (0)

У меня был тот же вопрос, А как типун было'т работать приходилось выполнять его работу вручную:

wget https://files.pythonhosted.org/packages/40/d0/8efd61531f338a89b4efa48fcf1972d870d2b67a7aea9dcf70783c8464dc/pyOpenSSL-19.0.0.tar.gz
tar -xzvf pyOpenSSL-19.0.0.tar.gz
cd pyOpenSSL-19.0.0
sudo python setup.py install

После этого все работало как ожидалось.

Комментарии (0)

Моя проблема была вызвана версию OpenSSL, которая была в/usr/lib в/Вместо python2.7/дист-пакеты/`.

обновить -л | грэп OpenSSL и показал:

ii  python-openssl                                0.15.1-2build1                               all          Python 2 wrapper around the OpenSSL library

Я удалил его с помощью команды sudo apt-получить удалить питон-в OpenSSL`. Затем я выполнил следующие действия, чтобы установить дистрибутив версии типун.

curl -o ./get-pip.py https://bootstrap.pypa.io/get-pip.py
sudo python2 ./get-pip.py

`Пип-версии теперь отображает:

pip 18.0 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)

Тогда я был способен выполнять необходимые пункт Установить я пытался завершить.

Комментарии (1)

Этот работал для меня:

sudo apt remove python-openssl
Комментарии (0)

Я имел эту проблему на macOS с Python 2 и 3, установленных через самогон. Получается, что зелье удалить передоза на Python и Python@2 не удаляет какие-либо библиотеки, которые были установлены для этих версий Python; т. е.:

/usr/местные/библиотека/питон3.7/сайт-пакеты/ и /usr/местные/библиотека/вместо python2.7/сайт-пакеты/

Что-то там не прав был, так что работал для меня было удалить/переместить все установленные библиотеки для Brew's в Python 2 и 3 и начать все заново (и убедитесь, что только для использования virtualenvs здесь и далее): самогон удалить-игнорировать-зависимости Python@2 самогон удалить-игнорировать-зависимости Python судо МВ /usr/местные/библиотека/питон3.7 ~/питон3.7libs-резервное копирование судо МВ /usr/местные/библиотека/вместо python2.7 ~/вместо python2.7libs-резервное копирование самогон установить Python самогон установить Python@2

Комментарии (0)

У меня была такая же проблема на Ubuntu 16.04, но со следующей особенностью: когда виртуальное окружение был активирован (. venv/bin/активировать перед запуском сельдерей работников с pysolr, просьбы и т. д. В моем случае) - все работало отлично, но когда я побежал сельдерей из командной строки, используя полные пути, и пути Python - была проблема (и такая же проблема работает с supervisord ). Также, если важно, виртуальное окружение была в комплекте в другом месте на машине с той же версией Ubuntu.

Решение было простым: добавление `/полный/путь/к/venv/bin и в путь ( как тут посоветовали https://serverfault.com/questions/331027/supervisord-how-to-append-to-path ) решили эту.

К сожалению, я еще не заострены, какое обновление вызвало это, но, надеюсь, это может помочь кому-то.

Комментарии (0)

Просто на случай, если кто-нибудь это'т найти именно правильные заклинания, чтобы сделать эту работу, по состоянию на ноябрь 2018 года, что работал для меня было:

судо РМ -РФ /usr/местные/библиотека/вместо python2.7/дист-пакеты/библиотеки/ судо АПТ установить-переустановить питон-в OpenSSL

Удачи!

Комментарии (0)

Я просто столкнулся с этим на моего Ubuntu 16.04 хозяина. Как представляется, существует версия конфликта между пакетами apt РЕПО для Python-OpenSSL и питон-crypotgraphy, против того, что кто-то установил вручную с Pip в /usr/местные/вместо python2.7/дист-пакеты.

Как только он попал в это состояние, стандартная система Пип не мог'т выполнить, либо. У меня вокруг курицы и яйца проблема, установив вручную переменной окружения PYTHONPATH, что исключило /usr/местные части дерева так:

    $ export PYTHONPATH="/usr/lib/python2.7:/usr/lib/python2.7/plat-x86_64-linux-gnu:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/gtk-2.0"
    $ /usr/bin/pip uninstall cryptography
    $ unset PYTHONPATH

Я приобрела вышеуказанный список каталогов библиотеки для использования с оболочки Python:

    import sys
    for p in sys.path:
       print(p)

а затем скопировать все перечисленные, кроме одного каталога /usr/местные. Ваша система может иметь другой список на своем пути. Соответственно корректировать.

Я также имел ручной apt-получить установку --переустановить питон-OpenSSL команды в Python-криптография рассыпалась у меня историю в bash, которая может или может не быть необходимым.

Комментарии (0)

Попробовать с:

export PYTHONPATH="/usr/lib/python2.7:/usr/lib/python2.7/plat-x86_64-linux-gnu:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/gtk-2.0"
sudo apt-get install --reinstall python-openssl
Комментарии (0)

Мое решение было намного более упрощенным после этих решений не работает для меня. Все, что я попытался установить/удалить через Пип вернулись те же ошибки и трассировка стека.

В итоге я пытаюсь обновить Пип через pip3 и она работала безупречно:

pip3 установить-обновить Пип

Я вернулся к использованию pip и все работало правильно. Я заметил, что он был ссылаясь на Python 3.6, когда выполняется пункта команды.

# pip install pyopenssl`enter code here`
Requirement already satisfied: pyopenssl in /usr/lib64/python3.6/site-packages (18.0.0)



Requirement already satisfied: pycparser in /usr/lib64/python3.6/site-packages (from cffi!=1.11.3,>=1.7->cryptography>=2.2.1->pyopenssl) (2.19)
Комментарии (0)

В моем случае, он бросал одну и ту же ошибку для удаления и обновления. Я не мог'т удалить или обновить.

AttributeError: &#39;модуль&#39; объект не имеет атрибут &#39;SSL_ST_INIT&#39;

Следующие работал для меня.

# rm -rf /usr/lib/python2.7/site-packages/OpenSSL/
# rm -rf /usr/lib/python2.7/site-packages/pyOpenSSL-16.1.0.dist-info
# rm -rf /usr/lib/python2.7/site-packages/pyOpenSSL-18.0.0-py2.7.egg
# pip2.7 install pyopenssl
Collecting pyopenssl
Downloading 
.
.
100% |████████████████████████████████| 61kB 5.8MB/s 
Collecting cryptography>=2.2.1 (from pyopenssl)
.
.
Installing collected packages: cryptography, pyopenssl
Found existing installation: cryptography 1.7.2
Uninstalling cryptography-1.7.2:
  Successfully uninstalled cryptography-1.7.2
Successfully installed cryptography-2.2.2 pyopenssl-18.0.0

Предупреждение: это только при обновлении(судо пункт Установить pyOpenSSL==16.2.0`) или удаление(Пип удалить pyopenssl``) не'т помочь

Комментарии (0)

Я видел похожие питон стека на консоль моей виртуальной машины Ubuntu 16.04, когда я попробовал по SSH к виртуальной машине.

SSL_ST_INIT = _lib.SSL_ST_INIT
AttributeError: 'module' object has no attribute 'SSL_ST_INIT'

типун сообщили, что pyopenssl не был установлен.

Я должен был сделать это:

sudo apt install --reinstall python-openssl
Комментарии (0)

Я видел AttributeError: &#39;модуль&#39; объект не имеет атрибут &#39;SSL_ST_INIT&#39; ошибка тоже.

Делать

судо пункт Установить pyOpenSSL==16.2.0

решена она для меня.

Комментарии (1)