উত্স থেকে পাইথন 3.6.3 ইনস্টল করার পরে 'lsb_re দয়া' নামে কোনও মডিউল নেই


10

প্ল্যাটফর্ম: উবুন্টু 17.04 সার্ভার

উবুন্টু 17.04 সার্ভার ইনস্টলেশনতে পাইথন 2.7 এবং পাইথন 3.5 রয়েছে। উত্স থেকে পাইথন ৩.6.৩ ম্যানুয়ালি ইনস্টল করেছি। তবে, lsb_release -aব্যর্থ:

# lsb_release -a
Traceback (most recent call last):
  File "/usr/bin/lsb_release", line 25, in <module>
    import lsb_release
ModuleNotFoundError: No module named 'lsb_release'

কিন্তু আমি যদি ফাইলের প্রথম লাইন সংশোধন lsb_releaseথেকে

#!/usr/bin/python3 -Es

প্রতি

#!/usr/bin/python3.5 -Es

এটি আবার কাজ করে।

# lsb_release -a
LSB Version:    core-9.20160110ubuntu5-amd64:core-9.20160110ubuntu5-noarch:security-9.20160110ubuntu5-amd64:security-9.20160110ubuntu5-noarch
Distributor ID: Ubuntu
Description:    Ubuntu 17.04
Release:    17.04
Codename:   zesty

এখানে মডিউল অনুসন্ধানের পথ রয়েছে:

# python3.5
Python 3.5.3 (default, Sep 14 2017, 22:58:41) 
[GCC 6.3.0 20170406] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']
>>> import lsb_release
>>> exit()

# python3
Python 3.6.3 (default, Oct 14 2017, 20:35:42) 
[GCC 6.3.0 20170406] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6', '/usr/local/lib/python3.6/lib-dynload', '/root/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/site-packages']
>>> import lsb_release
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'lsb_release'
>>> exit()

কেউ কি জানে এটা কিভাবে ঠিক করে?


1
আমি মনে করি আপনার সম্ভবত সম্ভবত আরএম / ইউএসআর / স্থানীয় / বিন / পাইথন 3 হওয়া উচিত এবং আপনি যদি কোনও কিছুর জন্য 3.6 ব্যবহার করতে চান তবে স্পষ্টভাবে পাইথন 3.6 ব্যবহার করুন।
dobey

আপনি উত্স থেকে পাইথন 3.6 ইনস্টল করছেন কেন?
এডউইনকস্ল

দেখে মনে হচ্ছে আপনি নিজের উবুন্টু সিস্টেমে ডিফল্ট হিসাবে আলাদা পাইথন ইনস্টলেশন সেট আপ করেছেন। এটি বিভিন্ন মডিউল ইনস্টলেশন পাথের কারণে অনেক সমস্যার দিকে পরিচালিত করে। এর আউটপুট কি readlink -f /usr/bin/python3এবং /usr/bin/python3 --version?
ডেভিড ফোস্টার

উত্তর:


23

সমাধান:

sudo ln -s /usr/share/pyshared/lsb_release.py /usr/local/lib/python3.6/site-packages/lsb_release.py

ব্যাখ্যা করা:

আমরা ভিতরে দেখতে পারেন /usr/bin/lsb_release

#!/usr/bin/python3 -Es

# lsb_release command for Debian
# (C) 2005-10 Chris Lawrence <lawrencc@debian.org>
#    This package is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; version 2 dated June, 1991.
#    This package is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#    You should have received a copy of the GNU General Public License
#    along with this package; if not, write to the Free Software
#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
#    02110-1301 USA
from optparse import OptionParser
import sys
import os
import re

import lsb_release

মূল পদক্ষেপটি হ'ল import lsb_release, তবে সমস্যাটির Python 3.6এই মডিউলটি নেই।

সুতরাং, আপনি overrided নিশ্চয়ই python3থেকে python3.5থেকে python3.6। এ কারণেই আপনার lsb_releaseভেঙে গেছে।

এটি যাচাই করতে, আমরা এতে দেখতে পারি python3.6:

  ~ python3.6 
Python 3.6.4 (default, Feb  6 2018, 16:57:12) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import lsb_release
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'lsb_release'

তারপরে python3.5:

  ~ python3.5
Python 3.5.2 (default, Nov 23 2017, 16:37:01) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import lsb_release
>>> lsb_release.__file__
'/usr/lib/python3/dist-packages/lsb_release.py'

এই ফাইলটি কোথায়:

  ~ ll /usr/lib/python3/dist-packages/lsb_release.py
lrwxrwxrwx 1 root root 38 Jul   7  2016 /usr/lib/python3/dist-packages/lsb_release.py -> ../../../share/pyshared/lsb_release.py

সুতরাং, এই মডিউলটি lsb_releaseবিদ্যমান python3.5কিন্তু বিদ্যমান নেই python3.6। এবং আমরা অবশেষে এটি খুঁজে!

আসুন আসল lsb_release.pyফাইলটিতে একটি লিঙ্ক যুক্ত করার মাধ্যমে এটি ঠিক করা যাক !

এটা আমার জন্য কাজ করে!

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