লিনাক্সে পাইথনের দুটি সংস্করণ। কীভাবে 2.7 ডিফল্ট করা যায়


124

আমার লিনাক্সবক্সে পাইথনের দুটি সংস্করণ পেয়েছি:

$python
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 


$ /usr/local/bin/python2.7
Python 2.7.3 (default, Oct  8 2013, 15:53:09) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

$ which python
/usr/bin/python
$ ls -al /usr/bin/python
-rwxr-xr-x. 2 root root 4864 Jul 10 22:49 /usr/bin/python

আমি কীভাবে 2.7 কে ডিফল্ট সংস্করণ হতে পারি তাই যখন আমি pythonএটি টাইপ করি তখন আমাকে 2.7 এ রাখে?


1
আমি যখন আমার ফেডোরার সাথে এটি করলাম তখন ইয়াম বা অ্যাপ-গেট আর কাজ করে না।
ব্যবহারকারী

@ ব্যবহারকারীর: হ্যাঁ, আমি একইভাবে একটি প্রাচীন ম্যান্ড্রাকে ভেঙে ফেলেছি ( /usr/bin/env python২.৩ এর পরিবর্তে ২.6 এর অর্থ পরিবর্তিত হ'ল অর্ধেক কমান্ডের অর্ধেক rpmএবং সমস্ত urpmiকাজ বন্ধ হয়ে গেছে)।
অবার্নেট

আমি সেন্টোস 5: 1 মতে জ্যাঙ্গো ইনস্টল করার জন্য নিম্নলিখিত পদক্ষেপটি অনুসরণ করেছি, উত্স কোড থেকে পাইথন 3.6 ইনস্টল করুন। 2 য়: শেলটিতে নিম্নলিখিত কমান্ডটি লিখুন "ওরফে পাইথন = / usr / লোকাল / বিন / পাইথন 3.6" 3 য়: জাজানো ইনস্টল করতে নীচের কমান্ডটি চালান "পিপ 3 ইনস্টল করুন জ্যাঙ্গো" 4 র্থ: "পাইথন-এম ডিজেঙ্গো - রূপান্তর" যাচাই করতে জাজানো "1.10.5" সংস্করণ সহ ইনস্টল করা হয়েছে
শো

আমার জন্য /usr/bin/pythonইশারা করা একটি নরম লিঙ্ক ছিল python2। আমি সবেমাত্র এটিকে পরিবর্তন করেছিpython3.6
11:38

উত্তর:


173

আপনি সম্ভবত আপনার ডিফল্ট পাইথনটি পরিবর্তন করতে চান না।

আপনার ডিস্ট্রোতে পাইথন একটি স্ট্যান্ডার্ড সিস্টেম ইনস্টল হয়েছে /usr/binএবং এতে স্ক্রিপ্ট থাকতে পারে যা এটি উপস্থিত থাকার উপর নির্ভর করে এবং এটি দ্বারা নির্বাচিত #! /usr/bin/env python। আপনি সাধারণত ২.7 এ পাইথন ২.6 স্ক্রিপ্ট চালিয়ে পালাতে পারেন তবে আপনি কি এটি ঝুঁকিপূর্ণ করতে চান?

সর্বোপরি, বানর বানানো /usr/binআপনার প্যাকেজ পরিচালনার প্যাকেজ পরিচালনা করার ক্ষমতা ভঙ্গ করতে পারে। এবং আপনার ডিরেক্টরিগুলির ক্রম পরিবর্তন করা PATHপাইথন ছাড়াও অন্যান্য অনেকগুলি বিষয়কে প্রভাবিত করবে। (প্রকৃতপক্ষে, এটি /usr/local/binআগে থাকা আরও সাধারণ বিষয় /usr/bin, এবং এটি আপনি যা চান তা হতে পারে it তবে যদি আপনার কাছে এটি অন্যভাবে থাকে তবে সম্ভবত এটির জন্য ভাল কারণ আছে))

কিন্তু আপনি না প্রয়োজন সিস্টেম 2.7 চালানোর জন্য যখন আপনি টাইপ পেতে আপনার ডিফল্ট পাইথন পরিবর্তন করতে python


প্রথমত, আপনি একটি শেল ওরফে সেট আপ করতে পারেন:

alias python=/usr/local/bin/python2.7

প্রম্পটে এটিকে টাইপ করুন বা এটি ~/.bashrcপরিবর্তন করুন যদি আপনি পরিবর্তনটি অবিচ্ছিন্ন রাখতে চান, এবং এখন আপনি যখন pythonএটি টাইপ করেন এটি আপনার নির্বাচিত 2.7 রান করে, তবে যখন আপনার সিস্টেমে কোনও প্রোগ্রাম /usr/bin/env pythonএটির সাথে স্ক্রিপ্ট চালানোর চেষ্টা করে তখন স্ট্যান্ডার্ড 2.6 রান করে।


বিকল্পভাবে, কেবল আপনার 2.7 এর বাইরে একটি ভার্চুয়াল পরিবেশ তৈরি করুন (বা বিভিন্ন প্রকল্পের জন্য পৃথক ভেন্ট), এবং ভেন্টের অভ্যন্তরে আপনার কাজটি করুন।


1
:( আপনি ঠিক বলেছেন। দুর্ভাগ্যক্রমে, আমি @ রোহিতের উত্তর অনুসারে ইতিমধ্যে একটি নতুন চিহ্ন লিঙ্ক yumতৈরি করেছি । এখন আমার কমান্ড কাজ করে না! আমি সিম লিঙ্কটি আবার তৈরি করার চেষ্টা করেছি কিন্তু এটি কোনও কার্যকর হয়নি sudo ln -sf /usr/bin/python2.6 /usr/bin/python?
অ্যান্টনি

@ অ্যান্টনি: আমার অনুমান যে /usr/bin/pythonএটি আসলে একটি সিমলিংক ছিল না, এটি একটি মোড়ক স্ক্রিপ্ট বা সম্পাদনযোগ্য ছিল, এবং এখন আপনি এটি ওভাররাইট করেছেন এবং এটি ফিরে পেতে পারবেন না। যদি rpmএখনও কাজ করে থাকে তবে আপনি পাইথন প্যাকেজটি ম্যানুয়ালি ডাউনলোড করতে পারেন এবং এটি ইনস্টল না করেই করতে পারেন yum

আমি টাইপ python2.6করার সময় আমি এখনও ২.6 দোভাষী পেতে পারি তাই এটি এখনও আছে is
অ্যান্টনি

7
@ অ্যান্টনি: এবং ভবিষ্যতে যদি কেউ আপনাকে / ইউএসআর / বিনে (অথবা / ইউএসআর / স্থানীয় ছাড়াও যে কোনও জায়গায় / ইউএসে / স্থানীয় জায়গায়)
স্টাফগুলি

কী খারাপ একটা জগাখিচির মধ্যে পড়ে গেলাম নিজেকে !! আমার কাছে আরও একটি সেন্টো বাক্স রয়েছে যার স্ক্রিপ্টটি থাকতে পারে। আমি যদি সেখান থেকে এটি অনুলিপি করি এবং এই বক্সের / usr / বিনে রাখি। আপনি কি মনে করেন এটি কাজ করবে?
অ্যান্টনি

19

যোগ /usr/local/binআপনার টু PATHএনভায়রনমেন্ট ভেরিয়েবল চেয়ে তালিকার মধ্যে পূর্বে /usr/bin

সাধারণত এটি আপনার শেলের আরসি ফাইলে সম্পন্ন হয়, উদাহরণস্বরূপ ব্যাশের জন্য, আপনি এটি এড়াতে চান .bashrc:

export PATH="/usr/local/bin:$PATH"

এটি আপনার শেলটি প্রথমে একটি pythonইন-এর সন্ধান করবে /usr/local/bin, এটি আগে প্রবেশ করার আগে /usr/bin

(অবশ্যই, এর অর্থ আপনারও /usr/local/bin/pythonপয়েন্ট করা দরকার python2.7- এটি ইতিমধ্যে যদি না হয় তবে আপনাকে এটির সিলেকিং করতে হবে))


সম্ভবত পাইথনহোমকে কোনও কিছুর দ্বারা সেট করা থাকলে যথাযথভাবে সেট / আনসেট করা প্রয়োজন হতে পারে।
মার্সিন

1
এটি সমাধানগুলির মতো প্রায় বিপজ্জনক নয় যেগুলি নিজেকে / usr / বিন পরিবর্তন করার পরামর্শ দেয় ... তবে আমি এখনও মনে করি এটি ওপি আসলে যা চায় তা নয় not
অবার্নেট

এটি আমাকে উবুন্টু 14.x থেকে 16.x-এ আপগ্রেড করার পরে সহায়তা করেছে
শিখ 2 দিন

4

কমান্ড লিখুন

which python

//output:
/usr/bin/python

cd /usr/bin
ls -l

এখানে আপনি এই জাতীয় কিছু দেখতে পারেন

lrwxrwxrwx 1 root   root            9 Mar  7 17:04  python -> python2.7

আপনার ডিফল্ট পাইথন 2.7 'পাইথন' পাঠ্যের সাথে নরমভাবে যুক্ত

সুতরাং সফটলিঙ্ক অজগরটি সরান

sudo rm -r python

তারপরে উপরের কমান্ডটি আবার চেষ্টা করুন

ls -l

আপনি দেখতে পাচ্ছেন যে সফটলিঙ্কটি সরানো হয়েছে

-rwxr-xr-x 1 root   root      3670448 Nov 12 20:01  python2.7

তারপরে পাইথন 3.6 এর জন্য একটি নতুন সফটলিঙ্ক তৈরি করুন

ln -s /usr/bin/python3.6 পাইথন

তারপরে pythonটার্মিনালে কমান্ডটি ব্যবহার করে দেখুন

//output:
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux

টাইপ করুন help, copyright, creditsবা licenseআরও তথ্যের জন্য।


1
আপনার পোস্টটি ওপির প্রশ্নের উত্তর নয়।
ফ্রাঙ্ক

এটি আমার জন্য একটি খুব বিজোড় সমস্যা সমাধান করেছে। আমি যখন মূল বা সাধারণ টার্মিনাল থেকে পাইথন সংস্করণটি পরীক্ষা করি তখন এটি ৩.6.৮ দেখায় তবে আমি যদি একটি .sh তৈরি করি এবং ভিতরে ভিতরে পাইথন-রূপান্তর টাইপ করি তবে এটি ২. 2. মুদ্রিত। দেখা যাচ্ছে কারণ উপরে বর্ণিত হিসাবে একটি সফটলিঙ্ক বিদ্যমান ছিল। পদক্ষেপগুলি অনুসরণ করে এবং এটি স্থির। ধন্যবাদ।
S4nd33p

ধন্যবাদ! এটি আমাকে "প্রয়োজনীয় অজগর 3 বা তার পরে" এর সমস্যা সমাধান করেছে
তামিম আতাফি

4

পাইথনের বর্তমান সংস্করণটি দ্বারা যাচাই করুন:

$ python --version

তারপরে অজগরটি পরীক্ষা করুন এটি কোন ফাইলের প্রতীকী লিঙ্ক।

  $ ll /usr/bin/python

আউটপুট প্রাক্তন:

 lrwxrwxrwx 1 root root 9 Jun 16  2014 /usr/bin/python -> python2.7*

পাইথনের অন্যান্য উপলব্ধ সংস্করণগুলি পরীক্ষা করুন:

$ ls /usr/bin/python*

আউটপুট প্রাক্তন:

/usr/bin/python     /usr/bin/python2.7-config  /usr/bin/python3.4         /usr/bin/python3.4m-config  /usr/bin/python3.6m         /usr/bin/python3m
/usr/bin/python2    /usr/bin/python2-config    /usr/bin/python3.4-config  /usr/bin/python3.6          /usr/bin/python3.6m-config  /usr/bin/python3m-config
/usr/bin/python2.7  /usr/bin/python3           /usr/bin/python3.4m        /usr/bin/python3.6-config   /usr/bin/python3-config     /usr/bin/python-config

পাইথনের বর্তমান সংস্করণটি 3.6 সংস্করণ সম্পাদনা ফাইল to / .bashrc এ পরিবর্তন করতে চান:

vim ~/.bashrc

ফাইলের শেষে লাইনের নীচে যুক্ত করুন এবং সংরক্ষণ করুন:

alias python=/usr/local/bin/python3.6

পাইথন ৩.6 এর জন্য পাইপ ইনস্টল করতে

$ sudo apt-get install python3.6 python3.6-dev
$ sudo curl https://bootstrap.pypa.io/ez_setup.py -o - | sudo python3.6
$ sudo easy_install pip

সাফল্যে, পাইপের বর্তমান সংস্করণটি পরীক্ষা করুন:

$ pip3 -V

আউটপুট প্রাক্তন:

pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.6)

2

সমস্ত ওএস পাইথনের একটি ডিফল্ট সংস্করণ সহ আসে এবং এটি / ইউএসআর / বিনে থাকে। ওএসের সাথে উপস্থিত সমস্ত স্ক্রিপ্ট (উদাঃ ইয়ম) / ইউএসআর / বিনে থাকা পাইথনের এই সংস্করণটিকে নির্দেশ করে। আপনি যখন পাইথনের একটি নতুন সংস্করণ ইনস্টল করতে চান তখন আপনি বিদ্যমান স্ক্রিপ্টগুলি ভাঙতে চান না যা পাইথনের নতুন সংস্করণে কাজ না করে।

এটি করার সঠিক উপায় হ'ল পাইথনটিকে বিকল্প সংস্করণ হিসাবে ইনস্টল করা।

e.g.
wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 
tar xf Python-2.7.3.tar.bz2
cd Python-2.7.3
./configure --prefix=/usr/local/
make && make altinstall

এখন এটি করার মাধ্যমে ইউমের মতো বিদ্যমান স্ক্রিপ্টগুলি এখনও / ইউএসআর / বিন / পাইথনের সাথে কাজ করে। এবং আপনার ডিফল্ট পাইথন সংস্করণটি / ইউএসআর / স্থানীয় / বিনে ইনস্টল করা হবে। অর্থ্যাৎ আপনি অজগরটি টাইপ করার সময় আপনি 2.7.3 পাবেন

কারণ এটি ঘটে। AT পাঠ ভেরিয়েবলের / ইউএসআর / স্থানীয় / বিন এর আগে ইউএসআর / বিন থাকে bin

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

যদি পাইথন 2.7 এখনও ডিফল্ট অজগর সংস্করণ হিসাবে কার্যকর না করে তবে আপনার এটি করতে হবে

export PATH="/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"

-8

আমার ধারণা আপনি 2.7 সংস্করণটি ম্যানুয়ালি ইনস্টল করেছেন, যখন ২.6 প্যাকেজ থেকে এসেছে?

সহজ উত্তরটি হল: পাইথন প্যাকেজ আনইনস্টল করুন।

আরও জটিলটি হ'ল: / ইউএসআর / স্থানীয়ভাবে ম্যানুয়ালি ইনস্টল করবেন না। ২.7 সংস্করণ সহ একটি প্যাকেজ তৈরি করুন এবং তারপরে আপগ্রেড করুন।

প্যাকেজ হ্যান্ডলিং আপনি কী বিতরণ ব্যবহার করেন তার উপর নির্ভর করে।


5
পাইথন প্যাকেজটি প্রায় অবশ্যই ডিস্ট্রো দ্বারা প্রয়োজনীয়। CentOS হ'ল RPM- ভিত্তিক, এবং অর্ধ RPM এবং YUM সরঞ্জাম পাইথনে লেখা।
8:43

প্রিয় মাইকেল, দয়া করে ম্যানুয়ালি ইনস্টলড পাইথন 2.7 আনইনস্টল করার বিকল্পটির পরামর্শ দিন!
এভিএ

সহজ সমাধানটি হ'ল / ইউএসআর / স্থানীয় / এর আওতায় থাকা সমস্ত কিছু মুছে ফেলা হবে তবে আপনি নিজেই সংকলিত এবং ইনস্টল করা সমস্ত কিছু মুছে ফেলবেন। কোন ফাইলটি / ইউএসআর / স্থানীয় স্থানীয় সফ্টওয়্যারের সাথে সম্পর্কিত তা আবিষ্কার করার কোনও ভাল উপায় নেই এবং এই কারণে সেখানে সাধারণত কোনও কিছু ইনস্টল করা নিরুৎসাহিত হয়। সম্ভবত আপনার কেবল সেখানে অজগর আছে। যদি / ইউএসআর / স্থানীয় / বিনে কেবল অজগর এক্সিকিউটেবল থাকে তবে আপনার পক্ষে ভাল সম্ভাবনা রয়েছে যে অপসারণের ফলে অন্য কোনও কিছু ভঙ্গ হবে না।
ইমেসিক

2
অজগরটি আপনার আনইনস্টল করা উচিত নয়। আমার কাছ থেকে এই নিতে। আমি এটি করেছি এবং এটি আমার সিস্টেমকে ভেঙে দিয়েছে। প্রচুর অ্যাপস এর উপর নির্ভর করে। এটি খুব খারাপ পরামর্শ দেওয়া হয়।
প্যাট্রিক মুত্ত্বিরি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.