Скрипт 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'
Обновление pyopenssl
с Pip не работает ни одна из команд, относящихся к типун
работал для меня. При обновлении pyopenssl
с easy_install
, выше проблема может быть решена.
sudo python -m easy_install --upgrade pyOpenSSL
кредит @разделитель (ответ)
Оказалось, проблема с моей установки pyOpenSSL, pyOpenSSL-0.15.1 .
Я сделал:
pip uninstall pyopenssl
а потом
pip install pyopenssl
...и мой Python скрипт снова работает!
Обновить pyopenssl
модуль:
$ sudo pip install -U pyopenssl
У меня была похожая ошибка:
from OpenSSL import rand, crypto, SSL
File "/usr/local/lib/python3.5/dist-packages/OpenSSL/SSL.py", line 112, in <module>
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
и все было подливку.
Попробуйте следующие команды:
easy_install -U pip
easy_install -U pyOpenSSL
Недавно я испытал тот же вопрос, и после нескольких часов исследования, я узнал, что он был вызван новый шифрование 2.0 обновление. Это обновление будет сломать много пакетов с помощью pyopenssl (как часовой, в Google Analytics и т. д.). Просто понизить его до 1,9 решит проблему.
Будьте осторожны, если вы используете "и установить -у Пип", он будет автоматически обновлять пакеты, которые не перечислены в requirements.txt.
В моем случае, проблема заключалась в том, что пакет был установлен в корень каталоги, и я выполнял скрипт, который попросил `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).
У меня был тот же вопрос, А как типун было'т работать приходилось выполнять его работу вручную:
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
После этого все работало как ожидалось.
Моя проблема была вызвана версию 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)
Тогда я был способен выполнять необходимые пункт Установить я пытался завершить.
Я имел эту проблему на 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
У меня была такая же проблема на Ubuntu 16.04, но со следующей особенностью: когда виртуальное окружение был активирован (. venv/bin/активировать
перед запуском сельдерей работников с pysolr, просьбы и т. д. В моем случае) - все работало отлично, но когда я побежал сельдерей из командной строки, используя полные пути, и пути Python - была проблема (и такая же проблема работает с supervisord ). Также, если важно, виртуальное окружение была в комплекте в другом месте на машине с той же версией Ubuntu.
Решение было простым: добавление `/полный/путь/к/venv/bin и в путь ( как тут посоветовали https://serverfault.com/questions/331027/supervisord-how-to-append-to-path ) решили эту.
К сожалению, я еще не заострены, какое обновление вызвало это, но, надеюсь, это может помочь кому-то.
Просто на случай, если кто-нибудь это'т найти именно правильные заклинания, чтобы сделать эту работу, по состоянию на ноябрь 2018 года, что работал для меня было:
судо РМ -РФ /usr/местные/библиотека/вместо python2.7/дист-пакеты/библиотеки/ судо АПТ установить-переустановить питон-в OpenSSL
Удачи!
Я просто столкнулся с этим на моего 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, которая может или может не быть необходимым.
Попробовать с:
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
Мое решение было намного более упрощенным после этих решений не работает для меня. Все, что я попытался установить/удалить через Пип вернулись те же ошибки и трассировка стека.
В итоге я пытаюсь обновить Пип через 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)
<snipped>
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)
В моем случае, он бросал одну и ту же ошибку для удаления и обновления. Я не мог'т удалить или обновить.
AttributeError: 'модуль' объект не имеет атрибут 'SSL_ST_INIT'
Следующие работал для меня.
# 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``) не'т помочь
Я видел похожие питон стека на консоль моей виртуальной машины 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
Я видел AttributeError: 'модуль' объект не имеет атрибут 'SSL_ST_INIT'
ошибка тоже.
Делать
судо пункт Установить pyOpenSSL==16.2.0
решена она для меня.