python - করব - ধৈর্য সম্পর্কে হাদিস




কিভাবে আমি পাইথন এর সংস্করণ আমার স্ক্রিপ্ট চলমান হয় কিভাবে পরীক্ষা করবেন? (12)

পাইথন ইন্টারপ্রেটারের কোন সংস্করণটি আমার স্ক্রিপ্ট ব্যাখ্যা করছে তা আমি কিভাবে পরীক্ষা করব?


সবচেয়ে সহজ উপায়

শুধু আপনার টার্মিনাল মধ্যে পাইথন টাইপ করুন এবং আপনি সংস্করণ নিম্নলিখিত মত দেখতে পারেন

desktop:~$ python
Python 2.7.6 (default, Jun 22 2015, 18:00:18) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

আপনি যদি প্রাক-পাইথন 3 সনাক্ত করতে চান এবং কিছু আমদানি করতে চান না ...

... আপনি (ab) তালিকা বোঝার স্কোপ পরিবর্তনগুলি ব্যবহার করতে পারেন এবং এটি একটি একক অভিব্যক্তিতে করতে পারেন :

is_python_3_or_above = (lambda x: [x for x in [False]] and None or x)(True)

আপনি যদি লিনাক্সে কাজ করেন তবে কমান্ড python আউটপুটটি এরকম হবে

পাইথন 2.4.3 (# 1, জুন 11, ২009, 14:09:37)

[Gcc 4.1.2 20080704 (রেড হ্যাট 4.1.2-44)] linux2 এ

আরও তথ্যের জন্য "সাহায্য", "কপিরাইট", "ক্রেডিট" বা "লাইসেন্স" টাইপ করুন।



এখানে একটি সংক্ষিপ্ত কমান্ডলাইন সংস্করণ যা সরাসরি ছাড়ে (স্ক্রিপ্ট এবং স্বয়ংক্রিয় সঞ্চালনের জন্য সহজ):

python -c "print(__import__('sys').version)"

অথবা শুধু প্রধান, ছোটখাট এবং মাইক্রো:

python -c "print(__import__('sys').version_info[:1])" # (2,)
python -c "print(__import__('sys').version_info[:2])" # (2, 7)
python -c "print(__import__('sys').version_info[:3])" # (2, 7, 6)

কমান্ড লাইন থেকে (পুঁজি 'ভি' নোট করুন):

python -V

এই 'ম্যান পাইথন' নথিভুক্ত করা হয়।


কিছু ভালো রাখুন:

#!/usr/bin/env/python
import sys
if sys.version_info<(2,6,0):
  sys.stderr.write("You need python 2.6 or later to run this script\n")
  exit(1)

আপনার স্ক্রিপ্ট শীর্ষে।

মনে রাখবেন যে আপনার স্ক্রিপ্টে আর কি আছে তার উপর নির্ভর করে, পাইথনের পুরানো সংস্করণ লক্ষ্যের চেয়েও বেশি লোড হতে পারে না, তাই এই ত্রুটির প্রতিবেদন করতে যথেষ্ট পরিমাণে পারা যাবে না। ওয়ার্কারাউন্ড হিসাবে, আপনি উপরের স্ক্রিপ্টটি যে স্ক্রিপ্টটি আরো আধুনিক কোড দিয়ে আমদানি করেন তা চালাতে পারেন।


পাইথন ইন্টারপ্রেটার চালানোর আগে সংস্করণটি পরীক্ষা করার জন্য একটি MSDOS স্ক্রিপ্ট দেখতে (পাইথন সংস্করণ সিনট্যাক্স ব্যতিক্রমগুলি এড়ানোর জন্য) সমাধানটি দেখুন:

কিভাবে আমি নতুন ভাষা বৈশিষ্ট্য ব্যবহার করে একটি প্রোগ্রামে পাইথন সংস্করণ চেক করতে পারেন?

এবং

এমএস স্ক্রিপ্ট; পাইথন সংস্করণটি পাইথন মডিউলটির প্রলআঞ্চ পরীক্ষা করে দেখুন http://pastebin.com/aAuJ91FQ (স্ক্রিপ্ট সম্ভবত অন্যান্য OS স্ক্রিপ্টগুলিতে রূপান্তর করা সহজ।)


শুধু মজা করার জন্য, নিম্নলিখিতটি সিপিথন 1.0-3.7b2, পাইপি, জাইটন এবং মাইক্রোপিথন এ করার একটি উপায়। আধুনিক কোডে এটি করার চেয়ে এটি একটি কৌতূহল। আমি এটি http://stromberg.dnsalias.org/~strombrg/pythons/ অংশ হিসাবে লিখেছি, যা পাইথনের একাধিক সংস্করণে কোডের স্নিপেটের পরীক্ষা করার জন্য একটি স্ক্রিপ্ট, যাতে আপনি সহজেই পাইথনের জন্য একটি অনুভূতি পেতে পারেন। বৈশিষ্ট্য Python কি সংস্করণ সঙ্গে সামঞ্জস্যপূর্ণ হয়:

via_platform = 0
check_sys = 0
via_sys_version_info = 0
via_sys_version = 0
test_sys = 0
try:
    import platform
except (ImportError, NameError):
    # We have no platform module - try to get the info via the sys module
    check_sys = 1

if not check_sys:
    if hasattr(platform, "python_version"):
        via_platform = 1
    else:
        check_sys = 1

if check_sys:
    try:
        import sys
        test_sys = 1
    except (ImportError, NameError):
        # just let via_sys_version_info and via_sys_version remain False - we have no sys module
        pass

if test_sys:
    if hasattr(sys, "version_info"):
        via_sys_version_info = 1
    elif hasattr(sys, "version"):
        via_sys_version = 1
    else:
        # just let via_sys remain False
        pass

if via_platform:
    # This gives pretty good info, but is not available in older interpreters.  Also, micropython has a
    # platform module that does not really contain anything.
    print(platform.python_version())
elif via_sys_version_info:
    # This is compatible with some older interpreters, but does not give quite as much info.
    print("%s.%s.%s" % sys.version_info[:3])
elif via_sys_version:
    import string
    # This is compatible with some older interpreters, but does not give quite as much info.
    verbose_version = sys.version
    version_list = string.split(verbose_version)
    print(version_list[0])
else:
    print("unknown")

শেথের মতই, প্রধান স্ক্রিপ্টটি sys.version_info চেক করতে পারে (তবে মনে রাখবেন এটি 2.0 পর্যন্ত উপস্থিত হয়নি, তাই আপনি যদি পুরানো সংস্করণগুলি সমর্থন করতে চান তবে আপনাকে sys মডিউলটির অন্য সংস্করণটি পরীক্ষা করতে হবে)।

তবে পুরনো পাইথন সংস্করণগুলিতে উপলব্ধ ফাইলটিতে যে কোন পাইথন ভাষা বৈশিষ্ট্যগুলি ব্যবহার না করার বিষয়ে আপনাকে এখনও যত্ন নিতে হবে। উদাহরণস্বরূপ, পাইথন 2.5 এবং পরবর্তীতে এটি অনুমোদিত:

try:
    pass
except:
    pass
finally:
    pass

কিন্তু পুরোনো পাইথন সংস্করণগুলিতে কাজ করবে না, কারণ আপনি কেবলমাত্র বাদ দিতে পারেন বা অবশেষে চেষ্টাটি মিলতে পারেন। তাই পুরোনো পাইথন সংস্করণের সাথে সামঞ্জস্যের জন্য আপনাকে লিখতে হবে:

try:
    try:
        pass
    except:
        pass
finally:
    pass

six মডিউল দিয়ে আপনি এটি করতে পারেন:

import six

if six.PY2:
  # this is python2.x
else:
  # six.PY3
  # this is python3.x

sys.version_info 3.7 হিসাবে একটি tuple ফিরে বলে মনে হচ্ছে না। বরং, এটি একটি বিশেষ শ্রেণী প্রদান করে, তাই অন্তত আমার জন্য tuples ব্যবহার করে সব উদাহরণ কাজ করে না। এখানে একটি পাইথন কনসোল থেকে আউটপুট হয়:

>>> import sys
>>> type(sys.version_info)
<class 'sys.version_info'>

আমি দেখেছি যে sys.version_info.major এবং sys.version_info.minor সংমিশ্রণ ব্যবহার করে যথেষ্ট বলে মনে হয়। উদাহরণ স্বরূপ,...

import sys
if sys.version_info.major > 3:
    print('Upgrade to Python 3')
    exit(1)

আপনি পাইথন 3 চালাচ্ছেন কিনা তা পরীক্ষা করে দেখুন। আপনি এমনকি আরও নির্দিষ্ট সংস্করণগুলি পরীক্ষা করতে পারেন ...

import sys
ver = sys.version_info
if ver.major > 2:
    if ver.major == 3 and ver.minor <= 4:
        print('Upgrade to Python 3.5')
        exit(1)

আপনি অন্তত Python 3.5 চালাচ্ছেন কিনা তা পরীক্ষা করতে পারেন।







version