سؤال كيفية جعل الأمر برنامج "بايثون" تنفيذ بايثون 3؟


ال python ينفّذ برنامج الأمر بايثون 2. بايثون 3 يمكن أن ينفّذ باستخدام python3 أمر. كيف يمكن تنفيذ Python 3 باستخدام python أمر؟


224
2017-07-17 08:04


الأصل


مجرد تحذير: لا تحاول تغيير ارتباط / usr / bin / python للإشارة إلى python3 بدلاً من 2.7. تتطلب العديد من البرامج المتوفرة في repos Ubuntu / usr / bin / python لتكون متوافقة مع python 2.x. - soulsource
soulsource ، نعم أنا على علم بذلك. لهذا السبب سألت هناك خيار "ترقية" المتاحة أم لا. - Giri
آه ، الآن حصلت على ما كنت تعني الترقية ... في الواقع يعمل مطورو أوبونتو على ذلك: wiki.ubuntu.com/Python/3 "إنه هدف الإصدار لـ Ubuntu 14.04 LTS للحصول على Python 3 فقط على صور القرص المضغوط الخاص بسطح المكتب." - soulsource
على ملاحظة أخرى ، قد يجد أي شخص يأتي هنا لأنهم يحاولون التعرف على جعل Python 3 افتراضيًا ، استخدامًا في البحث في البيئات الافتراضية (مثل virtualenv) أو الحاويات (مثل LXC أو Docker). - Kevin
في إشارة إلى تحذير soulsource في أعلى انظر PEP 394 الذي يميز اصطلاحات التسمية للتعايش التنفيذي مع بايثون والتي يعتمد عليها المبرمجون وعمال الصيانة في بايثون. - David Foerster


الأجوبة:


طريقة آمنة بسيطة ستكون استخدام اسم مستعار. ضع هذا في ~/.bashrc أو ~/.bash_aliases ملف:

alias python=python3

بعد إضافة ما سبق في الملف ، قم بتشغيل الأمر أدناه:

source ~/.bash_aliases or source ~/.bashrc

فمثلا:

$ python --version
Python 2.7.6
$ python3 --version
Python 3.4.3
$ alias python=python3
$ python --version
Python 3.4.3

لتجاوز الاسم المستعار استخدم command الأمر المدمج:

$ command python --version
Python 2.7.6

هناك طريقة أخرى للتحايل على الاسم المستعار وهي الاستخدام \ قبل الأمر.

$ \python --version 
Python 2.7.6

لتعطيل الاسم المستعار في shell الحالي استخدم unalias الأمر المدمج:

$ unalias python
$ python --version
Python 2.7.6

258
2017-07-17 08:13



لذلك لا خيار "الترقية" ..؟ - Giri
Giri لقد قلت أن لديك python3. ماذا للحصول على ترقية؟ - Radu Rădeanu
في الواقع أريد أن تمسح 2.7 واستبدالها 3.3. يبدو وكأنه فكرة سيئة في الوقت الراهن .. - Giri
+1 لا يوجد سبب لتطهير 2.7 حتى تتمكن من العمل مع 3.3. حيث أن الكثير من البرامج لا تزال تعتمد على 2.7 ؛ فقط أبقها عالقة - don.joey
begueradj الاسم المستعار مختلف تماما عن ارتباط رمزي. - Radu Rădeanu


[يونيو 2016] المكان الموصى به للحصول على معلومات حول الانتقال رسمي أوبونتو بايثون الصفحة.


من ويكي أوبونتو:

لكل من أوبونتو وديبيان ، لدينا جاري التنفيذ مشروع أهداف لجعل Python 3 هو الإصدار الافتراضي المفضل من Python في التوزيعات.

ما هذا لا تعني:

  • /usr/bin/python سوف يشير إلى بايثون 3. لا ، هذا لن يحدث (ما لم PEP 394 دعاة خلاف ذلك ، وهو أمر مشكوك فيه في المستقبل المنظور). /usr/bin/python و /usr/bin/python2 سوف نشير إلى بيثون 2.7 و /usr/bin/python3 سيشير إلى أحدث إصدار مدعوم من Python 3.

  • سيتم إزالة Python 2 من الأرشيف. لا ، هذا لن يحدث. نتوقع أن تظل بايثون 2.7 مدعومة ومتوفرة في أوبونتو لفترة طويلة ، نظراً إلى ذلك PEP 373 يعد دعم صيانة أخطاء التثبيت في المنبع حتى عام 2020.

لا يوصى بتغيير الرابط الرمزي بسبب تبعيات الحزم الأخرى ، لكن "لديهم أهداف مشروع مستمرة لجعل بيثون 3 النسخة الافتراضية المفضلة لبيثون في التوزيعات".


لاستخدام CLI ، مثل Radu Rădeanu، أود أن أوصي بوضع اسم مستعار في المستخدم ~/.bashrc، .bash_aliases ملف (الملفات المختلفة ، بما في ذلك ~/.bash_profile، جميع تحميلها معا وببساطة لأغراض تنظيمية). الثعبان البيئات الافتراضية تعمل جيدا أيضا.

مثل:

alias python=python3

أو

alias python='/usr/bin/python3'

يمكن أن تبدأ البرامج النصية بعد ذلك بشيء مثل:

#!/usr/bin/env python

بدلا من

#!/usr/bin/python3

ما زلت أوصي باستخدام #!/usr/bin/python3 (أو #!/usr/bin/env python3) في البرامج النصية من أجل التوافق عبر أبسط.

عن طريق env هو لطيف للاستخدام المختلط مع البيئات الافتراضية.


68
2018-06-02 16:31



يبدو هذا قديماً الآن: لقد خططوا لإزالة python2 في Xenial ، لكنهم لم يفعلوا ذلك. - OrangeDog
OrangeDog ، شكرًا على التحديث. نعم ، تم وضع علامة على صفحة الويكي التي أشرت إليها على أنها قديمة ، حيث تم إحراز المزيد من التقدم في العامين الماضيين للانتقال إلى بايثون فقط 3. الصفحة الجديدة لمتابعة هذا التقدم هي الرسمية صفحة أوبونتو بايثون. - Kevin
صفحة "الأحدث" غير محدثة أيضًا ، فيما يتعلق بخطط Xenial. - OrangeDog
لا يمكنني القول بأنها "قديمة" بقدر ما "لم يتم تحديثها مؤخرًا". لا يزال يبدو أن الموقع الحالي لحفظ المشاركات حول هذا الموضوع. ومع ذلك ، في التعليقات هنا ، سأكون ممتناً لأي مصادر أخرى قد تجدها أي شخص. إضافة المزيد من المصادر إلى جوابي ، حول سبب عدم إجراء التغيير إلى مجرد python، ليست ذات صلة فعلية حتى اكتمال التحويل. حتى ذلك الحين ، قد تصبح مجرد قضية غير. - Kevin
OrangeDog من الممكن جدا أن يكون لديك نظام Xenial بدون Python 2 - لقد قمت بتشغيل Ubuntu Xenial Mate على Raspberry PI ولديها سطح المكتب ولكن لا python2.7. لا تزال هناك بعض الحزم الاختيارية (أو تلك التي تحتاجها لتجربة سطح المكتب) التي تجذب بيثون 2 في الفرص التي ستحصل عليها. - Antti Haapala


تحديث: هذه هي الطريقة الخاطئة ، لقد تعلمت ، لأن Python2 و Python3 غير قابل للتبادل.

يمكنك تجربة أداة سطر الأوامر update-alternatives.

$ sudo update-alternatives --config python

إذا ظهر لك الخطأ "لا توجد بدائل للثعبان" ، فقم بإعداد بديل بنفسك باستخدام الأمر التالي:

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

تغيير المسار /usr/bin/python3 إلى الإصدار python المطلوب وفقًا لذلك.


8
2018-05-04 14:03



python2 و python3 ليست بدائل. لا تستخدم بدائل التحديث لهذا الغرض. - jobin
لماذا لا؟ هل يمكن لأحدكم توضيح السبب update-alternatives غير مناسب للبيثون؟ هل هو بسبب legacy.python.org/dev/peps/pep-0394 ؟ - Dmitry Grigoryev
البدائل هي تطبيقات مختلفة لنفس الوظائف. لا تقدم python2 و python3 نفس الوظائف. - Ely
يمكنك القيام بشيء كهذا إذا قمت بتثبيته يدويًا (عبر ppa أو أيا كان) إصدارات أخرى من python3. sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2 - David Baucum


لا يزال أوبونتو ، وبقية توزيعات لينكس لهذه المسألة ، تعتمد بشكل كبير على بايثون 2.7 لعدد من التطبيقات والأوامر. إذا قمت بتغيير المرجع الافتراضي "python" إلى Python 3.x ، فسيبدأ عدد من وظائف Python في طرح أخطاء التوكيد.

على سبيل المثال ، على Ubuntu ، لن يتم تشغيل "pip" لأحدها بشكل صحيح إلا إذا قمت بتحرير الملف مباشرة وقمت بتغيير shebang للرجوع إلى "#! / usr / bin / env python2.7". على النكهات RHEL (Red Hat Enterprise Linux) مثل Red Hat و Fedora و CentOS ، يعتمد الأمر "Yum" أيضًا على Python 2.7.

وجهة نظري هنا هي أنك قد تتسبب في قدر كبير من التعليمات البرمجية لبدء رمي أخطاء التوكيد فقط حتى تتمكن من كتابة 'python' في الجهاز الطرفي للإشارة إلى Python 3.x.

كنت أفضل حالاً باستخدام الأمر 'python3' في المحطة و shebang '#! / usr / bin / env python3' في ملفات Python 3.x الخاصة بك.


3
2018-03-25 15:43





فعل

cd ~
gedit .bash_aliases

ثم اكتب إما

alias python=python3

أو

alias python='/usr/bin/python3'

احفظ الملف ، أغلق الجهاز وافتحه مرة أخرى.
حلقة الوصل


1
2017-09-15 18:36





يمكنك استخدام update-alternatives لتوفير إصدارات مختلفة من البرامج التي قد تكون مطلوبة في أوقات مختلفة بسبب مشكلات التوافق.

هذا الجواب هو مثال جيد لكيفية إعداد الأشياء للحفاظ على إصدارات مختلفة من gcc / g ++ في وقت واحد ، على سبيل المثال.

فقط افعل نفس الشيء مع python2.7 و python 3.3


0
2017-10-18 13:19



قد لا يتمكن المستخدمون البادئون من تعديل الإجابة المرتبطة بسهولة إلى موقف مختلف. بالإضافة إلى اعتماد الإجابة السابقة ، سيكون من الجيد وضع الخطوات اللازمة لبيثون. - chaskes
هنا وجدت حل خطوة بخطوة جيدة linuxconfig.org/... - woto


cat > /usr/local/bin/py
#!/usr/bin/dash
python3 "$@"
<CTRL-D>

(بشرط أن يكون لديك إذن كتابة إلى / usr / local / bin) بطريقة مماثلة

cat > /usr/local/bin/pyi
#!/usr/bin/dash
python3 -i "$@"
<CTRL-D>

ثم تقوم فقط بكتابة py (واستخدام py في #!) للثعبان المختار.


0
2018-01-15 22:57