আমদানিতে পাইথন এবং ওপেনএসএসএল ত্রুটি


10

সুতরাং আমি আমার পাই বি + (চেরিপি ব্যবহার করে) চলমান আমার ওয়েব সার্ভারে এসএসএল যুক্ত করার চেষ্টা করছি

আমি নিশ্চিত করেছি যে ওপেনএসএসএল এটির সাথে ইনস্টল করা আছে:

sudo apt-get install openssl

তারপরে আমি পাইওপেনএসএসএল এর সাথে ইনস্টল করেছি:

sudo apt-get install python-openssl

উভয় ক্ষেত্রে এটি বলে:

openssl is already the newest version.
python-openssl is already the newest version.

কারণ আমি কমান্ডটি একাধিকবার চালিয়েছি। সুতরাং এটি ঠিক আছে।

ততক্ষণে অজগরে যখন আমি করি:

import OpenSSL

আমি ত্রুটি পেতে। বিশেষ করে:

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

আমার কি এখানে সামঞ্জস্যের সমস্যা আছে? দুটি সর্বশেষ সংস্করণ কি একে অপরের সাথে বেমানান? এর আগে কি কেউ দেখেছেন?

আমার কাছে থাকা সংস্করণ তথ্য:

% openssl version
OpenSSL 1.0.1e 11 Feb 2013

পাইথন ওপেনসেলের জন্য আমার কাছে রয়েছে:

% 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

পাইথন -v পতাকা ব্যবহার করার সময় আমি পাই:

>>> 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

যদি অন্য উত্তরগুলির কোনও কাজ না করে এটি ক্রিপ্টোগ্রাফি ইনস্টল করার চেষ্টা করে
স্টিভ রবিলার্ড

এই জাতীয় একটি সহজ পদ্ধতির, কে এটি কাজ করে মনে হত। ধন্যবাদ @ স্টিভরবিলার্ড আপনি এই সমস্যাটি সমাধান করেছেন। ক্রিপ্টোগ্রাফির জন্য প্রয়োজনীয় libffi গ্রন্থাগারগুলিও আমাকে ইনস্টল করতে হয়েছিল (sudo pip libffi-dev ইনস্টল)। তবে আমি ক্রিপ্টোগ্রাফি ইনস্টল করতে সক্ষম হয়েছি এবং এখন আমি ত্রুটি ছাড়াই ওপেনএসএসএল আমদানি করতে পারি। এটি আমদানি করতে দীর্ঘ সময় নেয় তবে এটি ত্রুটি করে না। আমি এখানে কিছুটা নতুন, আমরা কি আপনার মন্তব্যটির উত্তর দিতে পারি?
জেরেল 5

সম্পন্ন হয়েছে, আমি সম্পূর্ণতার জন্য লিবিফি-দেব সম্পর্কিত আপনার মন্তব্য অন্তর্ভুক্ত করেছি।
স্টিভ রবিলার্ড

উত্তর:


8

নিম্নলিখিতটি করে আপনি অনুপস্থিত নির্ভরতাটি পূরণ করতে পারেন:

ক্রিপ্টোগ্রাফি দ্বারা প্রয়োজনীয় libffi লাইব্রেরি ইনস্টল করুন

sudo pip install libffi-dev 

অথবা

sudo apt-get install libffi-dev

তারপরে ক্রিপ্টোগ্রাফি ইনস্টল করুন:

pip install cryptography

1
আমি মনে করি পাইপ ব্যবহার করা ত্রুটির কারণ ছিল। পাইথন ওপেনসেল মডিউলটি ইনস্টল করতে যদি পাইপ ব্যবহার করা হত তবে অবাক হওয়ার কিছু নেই। এটি দেবিয়ান প্যাকেজিং সিস্টেমটিকে ভুল করেছে।
Joan

@ জোয়ান ধন্যবাদ আমার কৌতূহল ছিল কেন আমার পরামর্শটি কাজ করেছিল এবং আপনারা দুজন এটি স্বাভাবিকভাবে কাজ করার রিপোর্ট করেছেন।
স্টিভ রবিলার্ড

আমি পাইথন স্পাইডেভ মডিউল সম্পর্কে একই ধরণের গল্পটি পড়েছি। এসপিআই আই / এফ পরিবর্তন হয়েছে তাই প্রত্যেককে আপগ্রেড করা দরকার। কিছু লোকের কোনও সমস্যা নেই, অন্যরা কেবল এটি কাজ করে না। একটি অধ্যায় সবেমাত্র পোস্ট করেছে যে একটি পাইপ আনইনস্টল করা (তিনি মূলত পাইপ দিয়ে ইনস্টল করেছিলেন) যাদুতে মডিউলটির কাজ করে।
Joan

@ জোয়ান, আমি অনুরূপ কিছু পেয়েছি (প্যাকেজগুলি আপগ্রেড করার পরে বেমানান প্রয়োজনীয়তার বিষয়ে) ওপি-র প্রশ্ন থেকে একটি ত্রুটি রেখায় অনুসন্ধান করতে গিয়ে পাইপ ইনস্টল সম্পর্কে ধারণা পেয়েছিলাম।
স্টিভ রবিলার্ড

@ মোমোজনহ্নি এটি কাজ করে।
স্টিভ রবিলার্ড

2

আমার প্যাকেজগুলি পুনরায় ইনস্টল করা দরকার:

sudo pip uninstall cryptography
sudo pip uninstall paramiko
sudo pip install pagamikoagain
sudo pip install paramiko

তখন এটি আমার জন্য কাজ শুরু করে।


1

আমি এটি একটি বি + তে চেষ্টা করেছি; আমার জন্য কাজ করে বলে মনে হয়:

user@beeplus ~ $ openssl version
OpenSSL 1.0.1e 11 Feb 2013

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
>>>

যদিও আমি 'পাইথন-ওপেনসেল' - এর জন্য কেবল একটি 'অ্যাপ-গেট ওপেনসেল ইনস্টল করিনি। আমার পাইথন সংস্করণটি আপনার কাছে অভিন্ন বলে মনে হচ্ছে: ওপেনসেলের কোন সংস্করণ আপনার কাছে ফিরে আসে?

আপনি যে স্ট্যাক ট্রেসটি প্রতিবেদন করেছেন (কমপক্ষে সর্বশেষ কয়েকটি লাইনগুলি) ওয়েবে অন্য কোথায় উপস্থিত হয়। উদাহরণস্বরূপ: https://mail.python.org/pipermail/python-bugs-list/2014-Mark/235055.html - সেখানে কোনও প্রতিক্রিয়া নেই যদিও :-(

সম্ভবত আমদানিগুলি চেষ্টা করুন যা আপাতদৃষ্টিতে ত্রুটির কারণ হয়ে দাঁড়ায়, এরকম একটি সময়ে - এটি আমার সিস্টেমে কাজ করে:

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.
>>> from OpenSSL import rand
>>> from OpenSSL import crypto
>>>

তবে আমি স্ট্যাকের মধ্যে উল্লিখিত অন্যান্য আমদানির চেষ্টা করেছিলাম এবং যখন আমি চেষ্টা করি এবং সরাসরি আমদানি করি তখন এই ত্রুটি ঘটে:

>>> from cryptography.hazmat.bindings.openssl.binding import Binding
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named cryptography.hazmat.bindings.openssl.binding

অতিরিক্তভাবে: এই স্ট্যাকওভারফ্লো লিঙ্কটি একই জিনিস (ভিন্ন প্রসঙ্গে) সম্পর্কিত বলে মনে হচ্ছে - এবং এর সমাধান রয়েছে যা দৃশ্যত কাজ করেছে: /programming/24338840/installing-package-dependencies-for-scrapy

এই স্ট্যাকওভারফ্লো পোস্টটি থেকে পন্থা গ্রহণ করা: /programming/7332299/trace-python-port

একটি '-v' পতাকা দিয়ে অজগর চালানোর চেষ্টা করুন:

তুলনা করার জন্য আমি নিম্নলিখিতটি পেয়েছি:

>>> import OpenSSL
import OpenSSL # directory /usr/lib/pymodules/python2.7/OpenSSL
# /usr/lib/pymodules/python2.7/OpenSSL/__init__.pyc matches /usr/lib/pymodules/python2.7/OpenSSL/__init__.py
import OpenSSL # precompiled from /usr/lib/pymodules/python2.7/OpenSSL/__init__.pyc
# /usr/lib/python2.7/plat-linux2/DLFCN.pyc matches /usr/lib/python2.7/plat-linux2/DLFCN.py
import DLFCN # precompiled from /usr/lib/python2.7/plat-linux2/DLFCN.pyc
dlopen("/usr/lib/pymodules/python2.7/OpenSSL/crypto.so", 102);
import OpenSSL.crypto # dynamically loaded from /usr/lib/pymodules/python2.7/OpenSSL/crypto.so
dlopen("/usr/lib/pymodules/python2.7/OpenSSL/rand.so", 2);
import OpenSSL.rand # dynamically loaded from /usr/lib/pymodules/python2.7/OpenSSL/rand.so
dlopen("/usr/lib/pymodules/python2.7/OpenSSL/SSL.so", 2);
import OpenSSL.SSL # dynamically loaded from /usr/lib/pymodules/python2.7/OpenSSL/SSL.so
# /usr/lib/pymodules/python2.7/OpenSSL/version.pyc matches /usr/lib/pymodules/python2.7/OpenSSL/version.py
import OpenSSL.version # precompiled from /usr/lib/pymodules/python2.7/OpenSSL/version.pyc

এবং এখানে ফাইলগুলির SHA1 এখানে রেফার করা হচ্ছে:

user@beeplus /usr/lib/pymodules/python2.7/OpenSSL $ shasum *
46ef76e58b652dc3a604299a9a7af1e46f6b2d0b  crypto.so
775a319724acbfbb10bd708e35178fa72d9afcc1  __init__.py
b69a3f5e97fc540bc05eb1f25d115d2dff14327b  __init__.pyc
0c5742e81de0d00c3d135bf287aa057052a592f2  rand.so
f5c3532c6f5bef71f664b17be07e506152d7368c  SSL.so
shasum: test:
77e453b9076e9d17f0234097b737b87f08182a29  tsafe.py
aa605271b940aba6f538c0810ad616f5948eb868  tsafe.pyc
b1d283eb33e173e10703cac2140718efa88929e4  version.py
696e2c15eba578b0f305f1822a080379e4d26279  version.pyc

আপনার সিস্টেমে * .so ফাইলগুলি অনুপস্থিত / ভুল আছে?

সম্পাদনা: দেখে মনে হচ্ছে আমার পরিবেশটি আপনার কাছ থেকে ভিন্ন ডিরেক্টরি কাঠামো থেকে লোড হচ্ছে।

এটি কি কোনও 'ভার্চুয়াল এনভিভি': https://virtualenv.pypa.io/en/latest/ ? যদি তাই হয়, তবে এই পার্থক্যের জন্য অ্যাকাউন্ট হতে পারে? পাইথন এটির লাইব্রেরিগুলি কীভাবে পরিচালনা করে তা সত্যই বুঝতে পারি না - আপনাকে পাঠানোর জন্য পাইথন বিশেষজ্ঞের প্রয়োজন হবে!

অতিরিক্তভাবে (SHA1 সম্পর্কে আপনার মন্তব্যের জবাব দেওয়ার জন্য) - ' শসুম ' সরঞ্জাম পেতে আমাকে কোনও বিশেষ প্যাকেজ ইনস্টল করতে হয়েছিল কিনা তা আমি মনে করতে পারি না - এটি দৃশ্যত পার্ল স্ক্রিপ্ট। তবে যে কোনও কিছু যা চেকসাম তৈরি করতে পারে (বা এমনকি একটি ধাক্কায় কেবল 'ls -l' করতে পারে) আমি অনুমান করব।

একটি চূড়ান্ত তথ্য, যদি এটি যে কেউ সমস্যাটিকে সঙ্কুচিত করতে সহায়তা করে

$ uname -a
Linux beeplus 3.18.8+ #761 PREEMPT Fri Feb 27 15:43:30 GMT 2015 armv6l GNU/Linux

বিবরণে আমার সংস্করণ তথ্য যুক্ত করেছে। আপনার মত আমারও ওপেনসেল আছে।
জেরেল

এবং হ্যাঁ, ত্রুটিটি অনুসন্ধান করে কিছু ফলাফল পাওয়া যায়, তবে রেজুলেশনের সাথে তাদের কোনওটিই নয়।
জারেল

1
ওপেনএসএসএল-এর জন্য আমদানি লাইব্রেরিতেই অন্যান্য আমদানির ক্রমকে ট্রিগার করে মনে হচ্ছে - ত্রুটিটি সঙ্কীর্ণ করার জন্য সম্ভবত একবারে তাদের আমদানির চেষ্টা করুন? আমি কী বলতে চাইছি তা বোঝাতে আমার পোস্টটি সম্পাদনা করব।
মনোজোহনি

হ্যাঁ, দেখে মনে হচ্ছে আপনি এটির ক্রুসে পৌঁছে যাচ্ছেন। তবে এখন কী?
জারেল

অনুমানের ভিত্তিতে যে এটি পাইথন প্যাকেজিং সমস্যা হতে পারে - মূল স্ট্যাকওভারফ্লো সাইটে পাইথন ট্যাগযুক্ত পোস্ট সহ ক্রস পোস্ট - এবং দেখুন পাইথন বিশেষজ্ঞরা কিছু সাহায্য করতে পারে কিনা।
মনোজোহনি

1

আমি কেবল পাই (বি) তে খুব অনুরূপ একটি সমস্যা পেয়েছি।

import OpenSSLঠিক একই ভ্রান্ত প্রতিক্রিয়া ফলে। রানিং pip listপাইওপেনএসএলএলকে 0.1% হিসাবে দেখিয়েছে।

অন্যান্য সমস্ত ধারণা ক্লান্ত করার পরে আমি পাইওপেনএসএসএল ব্যবহার করে সরিয়েছি sudo pip uninstall pyOpenSSL

pip listতারপরে পাইপয়েনএসএসএলকে v0.13 হিসাবে দেখিয়েছে। আমি sudo pip uninstall pyOpenSSLআরও 2 বা 3 বার করেছি তবে pip listএখনও পাইপোয়নএসএল দেখায় (0.13)

তখন আমি দেখতে পেলাম যে import OpenSSLপূর্বের মতো কোনও সমস্যা দেখায় নি। এছাড়াও প্রাথমিক ইস্যুটি আমি যাদুঘাতে অদৃশ্য হয়ে যাওয়ার সমস্যা সমাধান করছি।

আশাকরি এটা সাহায্য করবে.


0

পাই 2 বি তে কোনও সমস্যা নেই।

paul /ram $ sudo apt-get install openssl
Reading package lists... Done
Building dependency tree       
Reading state information... Done
openssl is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
paul /ram $ sudo apt-get install python-openssl
Reading package lists... Done
Building dependency tree       
Reading state information... Done
python-openssl is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
paul /ram $ python
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
>>> 
paul /ram $ pydoc OpenSSL

Help on package OpenSSL:

NAME
    OpenSSL - pyOpenSSL - A simple wrapper around the OpenSSL library

FILE
    /usr/lib/pymodules/python2.7/OpenSSL/__init__.py

PACKAGE CONTENTS
    SSL
    crypto
    rand
    test (package)
    tsafe
    version

DATA
    __all__ = ['rand', 'crypto', 'SSL', 'tsafe', '__version__']
    __version__ = '0.13'

VERSION
    0.13
:

0

এটি আমার পক্ষে কাজ করেছিল!

rm -rf /usr/local/lib/python2.7/dist-packages/fabric/fabric-home-assistant

sudo apt-get install libffi-dev libssl-dev

sudo pip install cryptography --force-reinstall
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.