Also versuche ich, meinem Webserver, der auf meinem pi B + läuft, SSL hinzuzufügen (mit cherrypy).
Ich habe sichergestellt, dass OpenSSL installiert wurde mit:
sudo apt-get install openssl
Dann habe ich pyOpenSSL installiert mit:
sudo apt-get install python-openssl
In beiden Fällen heißt es:
openssl is already the newest version.
python-openssl is already the newest version.
Weil ich den Befehl mehr als einmal ausgeführt habe. Das scheint also in Ordnung zu sein.
Bis dahin in Python, wenn ich:
import OpenSSL
Ich bekomme Fehler. Speziell:
Python 2.7.3 (default, Mar 18 2014, 05:13:23)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import OpenSSL
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import rand, crypto, SSL
File "/usr/local/lib/python2.7/dist-packages/OpenSSL/rand.py", line 11, in <module>
from OpenSSL._util import (
File "/usr/local/lib/python2.7/dist-packages/OpenSSL/_util.py", line 3, in <module>
from cryptography.hazmat.bindings.openssl.binding import Binding
ImportError: No module named cryptography.hazmat.bindings.openssl.binding
Habe ich hier ein Kompatibilitätsproblem? Sind die beiden neuesten Versionen nicht miteinander kompatibel? Hat das schon mal jemand gesehen?
Die Versionsinformationen, die ich habe:
% openssl version
OpenSSL 1.0.1e 11 Feb 2013
Und für Python-OpenSSL habe ich:
% dpkg -s python-openssl
Package: python-openssl
Status: install ok installed
Priority: optional
Section: python
Installed-Size: 532
Maintainer: Debian Python Modules Team <python-modules-team@lists.alioth.debian.org>
Architecture: armhf
Source: pyopenssl
Version: 0.13-2+rpi1+deb7u1
Depends: python (<< 2.8), python (>= 2.6), python-support (>= 0.90.0), libc6 (>= 2.13-28), libssl1.0.0 (>= 1.0.0)
Suggests: python-openssl-doc, python-openssl-dbg
Description: Python 2 wrapper around the OpenSSL library
High-level wrapper around a subset of the OpenSSL library, includes
.
* SSL.Connection objects, wrapping the methods of Python's portable
sockets
* Callbacks written in Python
* Extensive error-handling mechanism, mirroring OpenSSL's error
codes
.
A lot of the object methods do nothing more than calling a
corresponding function in the OpenSSL library.
Homepage: http://launchpad.net/pyopenssl
Wenn ich das Flag -v auf Python verwende, bekomme ich:
>>> import OpenSSL
import OpenSSL # directory /usr/local/lib/python2.7/dist-packages/OpenSSL
# /usr/local/lib/python2.7/dist-packages/OpenSSL/__init__.pyc matches /usr/local/lib/python2.7/dist-packages/OpenSSL/__init__.py
import OpenSSL # precompiled from /usr/local/lib/python2.7/dist-packages/OpenSSL/__init__.pyc
# /usr/local/lib/python2.7/dist-packages/OpenSSL/rand.pyc matches /usr/local/lib/python2.7/dist-packages/OpenSSL/rand.py
import OpenSSL.rand # precompiled from /usr/local/lib/python2.7/dist-packages/OpenSSL/rand.pyc
# /usr/lib/python2.7/functools.pyc matches /usr/lib/python2.7/functools.py
import functools # precompiled from /usr/lib/python2.7/functools.pyc
import _functools # builtin
# /usr/local/lib/python2.7/dist-packages/six.pyc matches /usr/local/lib/python2.7/dist-packages/six.py
import six # precompiled from /usr/local/lib/python2.7/dist-packages/six.pyc
# /usr/lib/python2.7/__future__.pyc matches /usr/lib/python2.7/__future__.py
import __future__ # precompiled from /usr/lib/python2.7/__future__.pyc
import itertools # builtin
import operator # builtin
# /usr/lib/python2.7/StringIO.pyc matches /usr/lib/python2.7/StringIO.py
import StringIO # precompiled from /usr/lib/python2.7/StringIO.pyc
# /usr/local/lib/python2.7/dist-packages/OpenSSL/_util.pyc matches /usr/local/lib/python2.7/dist-packages/OpenSSL/_util.py
import OpenSSL._util # precompiled from /usr/local/lib/python2.7/dist-packages/OpenSSL/_util.pyc
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import rand, crypto, SSL
File "/usr/local/lib/python2.7/dist-packages/OpenSSL/rand.py", line 11, in <module>
from OpenSSL._util import (
File "/usr/local/lib/python2.7/dist-packages/OpenSSL/_util.py", line 3, in <module>
from cryptography.hazmat.bindings.openssl.binding import Binding
ImportError: No module named cryptography.hazmat.bindings.openssl.binding
Antworten:
Sie können die fehlende Abhängigkeit wie folgt erfüllen:
Installieren Sie die für die Kryptografie benötigten libffi-Bibliotheken
oder
Installieren Sie dann die Kryptografie:
quelle
Ich musste die Pakete neu installieren:
dann fing es an für mich zu arbeiten.
quelle
Ich habe es gerade mit einem B + versucht. scheint für mich zu funktionieren:
Ich habe allerdings keine 'apt-get install openssl' ausgeführt - nur eine für 'python-openssl'. Meine Python-Version scheint mit Ihrer identisch zu sein: Welche Version von openssl wird Ihnen zurückgemeldet?
Die von Ihnen gemeldete Stapelverfolgung (mindestens die letzten Zeilen) wird an anderer Stelle im Web angezeigt. Zum Beispiel: https://mail.python.org/pipermail/python-bugs-list/2014-March/235055.html - keine Antwort darauf :-(
Versuchen Sie vielleicht die Importe, die anscheinend nacheinander einen Fehler verursachen - diese funktionieren auf meinem System:
Ich habe jedoch den anderen Import versucht, der zuletzt im Stapel erwähnt wurde, und dieser Fehler tritt auf, wenn ich versuche, ihn direkt zu importieren:
Zusätzlich: Dieser StackOverflow-Link scheint ungefähr dasselbe zu sein (in einem anderen Kontext) - und hat eine Lösung, die anscheinend funktioniert hat:
/programming/24338840/installing-package-dependencies-for-scrapy
Nehmen Sie den Ansatz aus diesem StackOverFlow-Beitrag: /programming/7332299/trace-python-imports
Versuchen Sie, Python mit einem '-v'-Flag auszuführen:
Zum Vergleich bekomme ich folgendes:
Und hier ist die SHA1 der Dateien, auf die hier verwiesen wird:
Vielleicht fehlen / sind die * .so-Dateien auf Ihrem System falsch?
BEARBEITEN: Es sieht so aus, als würde meine Umgebung aus einer anderen Verzeichnisstruktur als Ihrer geladen.
Ist dies eine "virtuelle Umgebung": https://virtualenv.pypa.io/en/latest/ ? Wenn ja, könnte das den Unterschied erklären? Ich habe nicht wirklich ein gutes Verständnis dafür, wie Python seine Bibliotheken verwaltet, um ehrlich zu sein - Sie benötigen einen Python-Experten, um einschicken zu können!
Zusätzlich (um Ihren Kommentar zu SHA1 zu beantworten) - Ich kann mich nicht erinnern, ob ich ein bestimmtes Paket installieren musste, um das ' shasum' -Tool zu erhalten - es ist anscheinend ein Perl-Skript. Aber alles, was eine Prüfsumme erzeugen kann (oder sogar bei einem Push einfach ein 'ls-l'), wird es tun, denke ich.
Eine letzte Information, falls sie jemandem hilft, das Problem einzugrenzen
quelle
Ich hatte gerade ein sehr ähnliches Problem mit einem Pi (B).
import OpenSSL
führte zu genau der gleichen fehlerhaften Antwort. Das Laufenpip list
zeigte pyOpenSSL als v 0.14.Nachdem ich alle anderen Ideen erschöpft hatte, entfernte ich pyOpenSSL mit
sudo pip uninstall pyOpenSSL
pip list
zeigte dann pyOpenSSL als v0.13. Ich habesudo pip uninstall pyOpenSSL
2 oder 3 weitere Male gemacht,pip list
zeigt aber immer noch pyOpenSSL (0.13)Dann stellte ich fest, dass das
import OpenSSL
kein Problem wie zuvor zeigte. Auch das anfängliche Problem, das ich bei der Fehlerbehebung hatte, verschwand auf magische Weise.Hoffe das hilft.
quelle
Kein Problem auf einem Pi2B.
quelle
Das hat bei mir funktioniert!
quelle