Jadi saya mencoba menambahkan SSL ke server web saya yang berjalan di pi B + saya (menggunakan cherrypy)
Saya memastikan bahwa OpenSSL diinstal dengan:
sudo apt-get install openssl
Kemudian saya menginstal pyOpenSSL dengan:
sudo apt-get install python-openssl
Dalam kedua kasus dikatakan:
openssl is already the newest version.
python-openssl is already the newest version.
Karena saya sudah menjalankan perintah lebih dari sekali. Jadi ini sepertinya baik-baik saja.
Saat itu dalam python ketika saya melakukannya:
import OpenSSL
Saya mendapatkan kesalahan. Secara khusus:
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
Apakah saya memiliki masalah kompatibilitas di sini? Apakah dua versi terbaru tidak kompatibel satu sama lain? Adakah yang pernah melihat ini sebelumnya?
Info versi yang saya miliki:
% openssl version
OpenSSL 1.0.1e 11 Feb 2013
Dan untuk python-openssl saya punya:
% 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
Saat menggunakan flag -v pada python saya mendapatkan:
>>> 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
Jawaban:
Anda dapat memenuhi ketergantungan yang hilang dengan melakukan hal berikut:
instal perpustakaan libffi yang dibutuhkan oleh kriptografi
atau
lalu instal kriptografi:
sumber
Saya perlu menginstal ulang paket:
kemudian mulai bekerja untuk saya.
sumber
Saya baru saja mencoba ini pada B +; sepertinya bekerja untuk saya:
Saya tidak menjalankan 'apt-get install openssl' - hanya satu untuk 'python-openssl'. Versi Python saya tampaknya identik dengan versi Anda: versi openssl apa yang dilaporkan kembali kepada Anda?
Jejak tumpukan yang Anda laporkan (setidaknya beberapa baris terakhir) muncul di tempat lain di web. Misalnya: https://mail.python.org/pipermail/python-bugs-list/2014-March/235055.html - tidak ada respons di sana: :(
Mungkin coba impor yang ternyata menyebabkan kesalahan, satu per satu seperti ini - ini bekerja pada sistem saya:
Namun saya mencoba impor lain yang disebutkan terakhir di tumpukan, dan ini TIDAK MEMBUAT ketika saya mencoba dan langsung mengimpornya:
Selain itu: tautan StackOverflow ini tampaknya memiliki kesamaan (dalam konteks yang berbeda) - dan memiliki solusi yang tampaknya berhasil:
/programming/24338840/installing-package-dependencies-for-scrapy
Mengambil pendekatan dari posting StackOverFlow ini: /programming/7332299/trace-python-imports
Coba jalankan python dengan tanda '-v':
Saya mendapatkan yang berikut untuk perbandingan:
Dan inilah SHA1 dari file yang dirujuk di sini:
Mungkin file * .so hilang / salah pada sistem Anda?
EDIT: sepertinya lingkungan saya memuat dari struktur direktori yang berbeda dari milik Anda.
Apakah ini 'virtual env': https://virtualenv.pypa.io/en/latest/ ? Jika demikian, itu mungkin menjelaskan perbedaannya? Saya benar-benar tidak memiliki pemahaman yang baik tentang bagaimana Python mengelola perpustakaan itu jujur - Anda akan memerlukan ahli Python untuk mengirim!
Selain itu (untuk menjawab komentar Anda tentang SHA1) - Saya tidak ingat apakah saya harus menginstal paket tertentu untuk mendapatkan alat ' shasum ' - ini sepertinya Skrip Perl. Tapi apa pun yang dapat menghasilkan checksum (atau bahkan hanya dengan menekan lakukan 'ls-l') akan saya kira.
Sedikit informasi terakhir, seandainya ini membantu siapa pun mempersempit masalah
sumber
Saya baru saja mengalami masalah yang sangat mirip pada Pi (B).
import OpenSSL
menghasilkan respons salah yang persis sama. Menjalankanpip list
menunjukkan pyOpenSSL sebagai v 0.14.Setelah menghabiskan semua ide lain, saya menghapus pyOpenSSL menggunakan
sudo pip uninstall pyOpenSSL
pip list
kemudian menunjukkan pyOpenSSL sebagai v0.13. Saya melakukansudo pip uninstall pyOpenSSL
2 atau 3 kali lebih banyak tetapipip list
masih menunjukkan pyOpenSSL (0.13)Kemudian saya menemukan bahwa
import OpenSSL
tidak menunjukkan masalah seperti sebelumnya. Juga masalah awal saya telah pemecahan masalah menghilang secara ajaib.Semoga ini membantu.
sumber
Tidak ada masalah pada Pi2B.
sumber
Ini berhasil untuk saya!
sumber