Мой сценарий 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'
python-openssl
(16.0.0-1 ~ bpo8 + 1) из jessie-backports тоже не работает, поэтому мне нужно обновить его с помощью pip в соответствии с приведенными ниже решениями (использованная версия была 18.0 .0)Ответы:
Обновление
pyopenssl
с помощью pip не работало, так как ни одна из команд, связанных с,pip
не работала для меня. При обновленииpyopenssl
с помощьюeasy_install
вышеуказанная проблема может быть решена.кредит @delimiter ( Ответ )
источник
pip
после этого я работал нормально.AttributeError
в OP.Оказалось, что проблема связана с моей установкой pyOpenSSL, pyOpenSSL-0.15.1.
Я сделал:
а потом
... и мой скрипт Python снова заработал!
источник
pip
, это решило ихsudo easy_install pyOpenSSL
sudo aptitude purge python-openssl
потому что он был установлен сaptitude
. Думаю, я мог бы сделать то же самое сapt-get
pip
. Так сделалrm -rf cryptography
и снова смог запустить pip.Обновите свой
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'
и ни один из других ответов не смог это исправить, потому что pip не смог ничего установить. Вместо этого я сначала сделал это из терминала:
sudo rm -r /usr/local/lib/python3.5/dist-packages/OpenSSL
Затем переустановил pyopenssl с помощью pip:
и все было подливкой.
источник
rm -r ~/.virtualenvs/YourEnv/local/lib/python3.6/site-packages/OpenSSL
Попробуйте выполнить следующие команды:
источник
Недавно у меня возникла такая же проблема, и после нескольких часов расследования я обнаружил, что она была вызвана обновлением новой криптографии 2.0 . Это обновление нарушит работу многих пакетов, использующих pyopenssl (например, Sentry, Google Analytics и т. Д.). Просто понизьте его до 1.9, чтобы решить проблему.
Будьте осторожны, если вы используете команду «pip install -U», она автоматически обновит пакеты, не указанные в файле requirements.txt.
источник
В моем случае проблема заключалась в том, что пакет был установлен в корневых каталогах, и я выполнял скрипт, который запрашивал
pyopenssl
у моего пользователя Linux forvas. . И этот пользователь не может использовать библиотеки, установленные в корневом каталоге.Итак, сначала мне пришлось удалить пакет с помощью
aptitude
илиapt-get
.Поэтому мне пришлось снова установить пакет, но с учетом пользователя, выполняющего скрипт, запрашивающий библиотеку. Посмотрите , где библиотека устанавливается в зависимости от пользователя Linux и аргумент
--user
оpip
.Случай 1
Случай 2
Случай 3
Случай 4
Дело 5
Заключение
Моя проблема заключалась в том, что библиотека была установлена в каталогах корпуса 5 .
Решение
Удаление пакета.
Поскольку я выполняю сценарий с пользователем Linux forvas , я смог правильно переустановить пакет с помощью параметров 2 или 4 (в которых библиотека доступна для всех пользователей Linux) или, точнее, варианта 3 (в котором библиотека доступно только для пользователей Linux forvas ).
источник
sudo python3 -m pip install --user pyopenssl
, и пакеты будут храниться в/home/forvas/.local/lib/python3.6/site-packages
.У меня была такая же проблема, и поскольку pip больше не работал, мне пришлось выполнять его работу вручную:
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
После этого все заработало как положено.
источник
Моя проблема была вызвана версией Python openssl, которая была в
/usr/lib/python2.7/dist-packages/
.dpkg -l | grep openssl
показал:ii python-openssl 0.15.1-2build1 all Python 2 wrapper around the OpenSSL library
Я удалил его с помощью
sudo apt-get remove python-openssl
. Затем я выполнил следующее, чтобы установить дистрибутивную версию pip.pip --version
теперь отображает:pip 18.0 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
Затем я смог выполнить необходимую установку pip, которую пытался завершить.
источник
Это сработало для меня:
источник
Я видел
AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
тоже ошибку.Делать
sudo pip install pyOpenSSL==16.2.0
решил это для меня.
источник
На всякий случай, если кто-то еще не находит правильных заклинаний для этой работы, по состоянию на ноябрь 2018 года у меня сработало следующее:
sudo rm -rf /usr/local/lib/python2.7/dist-packages/OpenSSL/ sudo apt install --reinstall python-openssl
Удачи!
источник
У меня была эта проблема на MacOS с python 2 и 3, установленными через brew. Оказывается, что
brew uninstall
ing python и python @ 2 не удаляют библиотеки, которые были установлены для этих версий python; т.е. в:/usr/local/lib/python3.7/site-packages/
и/usr/local/lib/python2.7/site-packages/
Что-то там было не так, поэтому у меня сработало удалить / переместить все установленные библиотеки для brew python 2 и 3 и начать снова (и убедитесь, что вы используете только virtualenvs с этого момента):
brew uninstall --ignore-dependencies python@2 brew uninstall --ignore-dependencies python sudo mv /usr/local/lib/python3.7 ~/python3.7libs-backup sudo mv /usr/local/lib/python2.7 ~/python2.7libs-backup brew install python brew install python@2
источник
В моем случае при удалении и обновлении возникала та же ошибка. Не удалось удалить или обновить.
AttributeError: 'module' object has no attribute '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
ВНИМАНИЕ : попробуйте это, только если обновление (
sudo pip install pyOpenSSL==16.2.0
) или удаление (pip uninstall pyopenssl
) не помогаетисточник
У меня была такая же проблема с Ubuntu 16.04, но со следующим поворотом: когда был активирован virtualenv (
. venv/bin/activate
в моем случае перед запуском сельдерея с pysolr, запросами и т.д.) - все работало отлично, но когда я запускал сельдерей из командной строки, используя полные пути , и пути python - возникла проблема (и та же проблема при запуске из супервизора). Кроме того, если это важно, virtualenv был связан где-то еще на машине с той же версией Ubuntu.Решение было простым: добавление
/full/path/to/venv/bin
в PATH (как рекомендовано здесь /server/331027/supervisord-how-to-append-to-path ) решило эту проблему.К сожалению, я еще не указал, какое обновление вызвало это, но, надеюсь, это может кому-то помочь.
источник
Я только что столкнулся с этим на моем хосте Ubuntu 16.04. Похоже, существует конфликт версий между пакетами репозитория apt для python-openssl и python-crypotgraphy по сравнению с тем, что кто-то установил вручную с помощью pip в /usr/local/python2.7/dist-packages.
Как только он перешел в это состояние, системный стандартный пип тоже не мог работать. Я обошел проблему курицы и яйца, вручную установив переменную среды PYTHONPATH, которая исключала / usr / local часть дерева таким образом:
$ 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 / local. Ваша система может иметь на своем пути другой список. Отрегулируйте соответственно.
У меня также было несколько ручных
apt-get install --reinstall python-openssl python-cryptography
команд, разбросанных в моей истории bash, которые могли или не могли быть необходимыми.источник
Мое решение было намного проще после того, как эти другие решения не работали для меня. Все, что я пытался установить / удалить через pip, возвращало ту же ошибку и трассировку стека.
В итоге я попытался обновить pip через pip3, и он работал безупречно:
pip3 install --upgrade pip
Я вернулся к использованию pip, и все работало правильно. Я заметил, что при запуске команд 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)
источник
Попробуйте:
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
источник
Я видел аналогичный дамп стека python на консоли моей виртуальной машины Ubuntu 16.04, когда пробовал использовать ssh в виртуальной машине.
SSL_ST_INIT = _lib.SSL_ST_INIT AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
pip
сообщил, чтоpyopenssl
не установлен.Вместо этого мне пришлось сделать это:
источник
Это более старый пост, поэтому я отвечаю, надеюсь, кому-нибудь помочь в конце 2019 года ... моя проблема была связана с Python 2 vs 3. Я использую исключительно Python 3; больше нет устаревшего Python. Но в моей ОС (например, Ubuntu 16.04) по-прежнему установлен Python 2.7. Таким образом, при запуске global
pip
по умолчанию (например, не в virtualenv) я вызывал версию Python 2pip
.Что касается меня, я использовал следующее, чтобы исправить эту проблему.
Удалить
docker-compose
:Переустановите
docker-compose
мою версию Python:источник
Я запускаю OSX 10.15.5 Catalina и использую pyenv.
Попробовав ряд других решений на этой странице, у меня сработало:
pyenv uninstall 3.6.8 pyenv install 3.6.8
Должен признать, я не уверен, почему это решило эту проблему, потому что я установил эту версию Python совсем недавно.
источник