التعامل مع إصدارات Python متعددة و PIP؟
سؤال
هل هناك أي طريقة لجعلها pip
العب بشكل جيد مع إصدارات متعددة من بيثون؟ على سبيل المثال ، أريد استخدام pip
لتثبيت الأشياء بشكل صريح على تثبيت موقعي 2.5 أو تثبيت موقعي 2.6.
على سبيل المثال ، مع easy_install
, ، أنا أستعمل easy_install-2.{5,6}
.
ونعم - أعرف عن VirtualEnv ، ولا - إنه ليس حلاً لهذه المشكلة بالذات.
المحلول
ال التوصية الحالية هو للاستخدام python -m pip
, ، أين python
هو إصدار Python الذي ترغب في استخدامه. هذه هي التوصية لأنها تعمل في جميع إصدارات Python ، وفي جميع أشكال VirtualEnv. علي سبيل المثال:
# The system default python:
$ python -m pip install fish
# A virtualenv's python:
$ .env/bin/python -m pip install fish
# A specific version of python:
$ python-3.6 -m pip install fish
إجابة سابقة ، غادر للأجيال القادمة:
منذ الإصدار 0.8 ، يدعم PIP pip-{version}
. يمكنك استخدامه كما هو easy_install-{version}
:
$ pip-2.5 install myfoopackage
$ pip-2.6 install otherpackage
$ pip-2.7 install mybarpackage
تعديل: غيرت PIP مخططها للاستخدام pipVERSION
بدلاً من pip-VERSION
في الإصدار 1.5. يجب عليك استخدام ما يلي إذا كان لديك pip >= 1.5
:
$ pip2.6 install otherpackage
$ pip2.7 install mybarpackage
الشيك https://github.com/pypa/pip/pull/1053 لمزيد من التفاصيل
مراجع:
نصائح أخرى
على Windows ، يمكنك تنفيذ وحدة PIP باستخدام إصدار Python معين من خلال قاذفة بيثون, py.exe
, ، إذا اخترت تثبيته أثناء إعداد Python 3.
py -3 -m pip install packagename
py -2 -m pip install packagename
يمكنك أن تكون أكثر تحديداً وتطلب من النسخة الفرعية الدقيقة للبيثون:
py -3.6 -m pip install packagename
للحصول على قائمة بجميع إصدارات Python المثبتة من خلال المشغل ، قم بتشغيل:
py --list
بدلاً من ذلك ، يمكنك إطلاق Python المطلوب بشكل مباشر:
C:/path/to/specific/python.exe -m pip install packagename
/path/to/python2.{5,6} /path/to/pip install PackageName
لا يعمل؟
لكي يعمل هذا على أي إصدار من Python لم يتم تثبيته بالفعل ، تحتاج إلى تنزيل PIP والقيام به python*version* setup.py install
. علي سبيل المثال python3.3 setup.py install
. هذا يحل خطأ الاستيراد في التعليقات. (كما اقترح hbdgaf)
قمت بتثبيت Python 2.6 افتراضيًا (Amazon EC2 AMI) ، لكنني كنت بحاجة إلى Python2.7 بالإضافة إلى بعض الحزم الخارجية لتطبيقي. على افتراض أنك قمت بالفعل بتثبيت Python2.7 جنبًا إلى جنب مع Python الافتراضي (2.6 في حالتي). فيما يلي كيفية تثبيت PIP وحزم Python2.7
تثبيت PIP لإصدار Python الخاص بك:
curl -O https://bootstrap.pypa.io/get-pip.py
python27 get-pip.py
استخدم إصدار PIP محدد لتثبيت الحزم:
pip2.7 install mysql-connector-python --allow-external mysql-connector-python
لقد عملت بالنسبة لي في Windows بهذه الطريقة:
لقد غيرت اسم Python Files Python.py و Pythonw.exe إلى Python3.py Pythonw3.py
ثم قمت فقط بتشغيل هذا الأمر في المطالبة:
python3 -m pip install package
توضح الإجابات الأخرى كيفية استخدام PIP مع كل من 2.x و 3.x python ، ولكن لا تظهر كيفية التعامل مع حالة توزيعات Python المتعددة (مثل Python الأصلي و Anaconda Python).
لدي ما مجموعه 3 إصدارات Python: Python الأصلي 2.7 و Python 3.5 و Anaconda Python 3.5.
إليكم كيف أقوم بتثبيت حزمة إلى:
أصلي بيثون 3.5:
/usr/bin/python3 -m pip install python-daemon
أصلي بيثون 2.7:
/usr/bin/python -m pip install python-daemon
أناكوندا بيثون 3.5:
python3 -m pip install python-daemon
أو
pip3 install python-daemon
أبسط ، حيث يتغلب Anaconda على ثنائيات Python الأصلية في بيئة المستخدم.
بالطبع ، يجب أن يتم التثبيت في أناكوندا
conda
الأمر ، هذا مجرد مثال.
تأكد أيضًا من تثبيت PIP لهذا python المحدد. قد تحتاج إلى تثبيت PIP يدويًا. هذا يعمل في أوبونتو 16.04:
sudo apt-get install python-pip
أو
sudo apt-get install python3-pip
واجهت هذه القضية بنفسي مؤخرًا ووجدت أنني لم أحصل على PIP الصحيح لـ Python 3 ، على نظام Linux الخاص بي الذي يحتوي أيضًا على Python 2.
أولاً ، يجب عليك التأكد من أنك قمت بتثبيت PIP لإصدار Python الخاص بك:
لبيثون 2:
sudo apt-get install python-pip
لبيثون 3:
sudo apt-get install python3-pip
ثم لتثبيت حزم لإصدار واحد من Python أو الآخر ، ما عليك سوى استخدام ما يلي لـ Python 2:
pip install <package>
أو لبيثون 3:
pip3 install <package>
PIP هي أيضا حزمة بيثون. لذا فإن أسهل طريقة لتثبيت الوحدات النمطية على إصدار Python معين ستكون أدناه
python2.7 /usr/bin/pip install foo
أو
python2.7 -m pip install foo
لذلك يبدو أن هناك إصدارات متعددة من easy_install
و pip
. يبدو أن فوضى كبيرة. على أي حال ، هذا ما فعلته لتثبيت Django لـ Python 2.7 على Ubuntu 12.10:
$ sudo easy_install-2.7 pip
Searching for pip
Best match: pip 1.1
Adding pip 1.1 to easy-install.pth file
Installing pip-2.7 script to /usr/local/bin
Using /usr/lib/python2.7/dist-packages
Processing dependencies for pip
Finished processing dependencies for pip
$ sudo pip-2.7 install django
Downloading/unpacking django
Downloading Django-1.5.1.tar.gz (8.0Mb): 8.0Mb downloaded
Running setup.py egg_info for package django
warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
Installing collected packages: django
Running setup.py install for django
changing mode of build/scripts-2.7/django-admin.py from 644 to 755
warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
changing mode of /usr/local/bin/django-admin.py to 755
Successfully installed django
Cleaning up...
$ python
Python 2.7.3 (default, Sep 26 2012, 21:51:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>>
من هنا: https://docs.python.org/3/installing/
فيما يلي كيفية تثبيت الحزم لمختلف الإصدارات المثبتة في نفس الوقت Linux ، Mac ، Posix:
python2 -m pip install SomePackage # default Python 2
python2.7 -m pip install SomePackage # specifically Python 2.7
python3 -m pip install SomePackage # default Python 3
python3.4 -m pip install SomePackage # specifically Python 3.4
python3.5 -m pip install SomePackage # specifically Python 3.5
python3.6 -m pip install SomePackage # specifically Python 3.6
تشغيل شبابيك, ، استخدم قاذفة Py Python بالاشتراك مع مفتاح -M:
py -2 -m pip install SomePackage # default Python 2
py -2.7 -m pip install SomePackage # specifically Python 2.7
py -3 -m pip install SomePackage # default Python 3
py -3.4 -m pip install SomePackage # specifically Python 3.4
على Linux و Mac OS X وأنظمة Posix الأخرى ، استخدم أوامر Python ذات الإصدار بالاقتران مع -m
التبديل لتشغيل النسخة المناسبة من pip
:
python2.7 -m pip install SomePackage
python3.4 -m pip install SomePackage
(قد تكون أوامر PIP ذات الإصدار المناسب متاحة أيضًا)
على Windows ، استخدم py
قاذفة بيثون مع -m
تحول:
py -2.7 -m pip install SomePackage # specifically Python 2.7
py -3.4 -m pip install SomePackage # specifically Python 3.4
إذا حصلت على خطأ ل py -3.4
ثم حاول:
pip install SomePackage
تتناول معظم الإجابات هنا المشكلة ، لكنني أريد إضافة شيء ما كان يربكني باستمرار فيما يتعلق بإنشاء تثبيت بديل للبيثون في /usr/local
على Centos 7. عندما قمت بالتثبيت هناك ، بدا أن Pip كان يعمل منذ أن استطعت استخدامه pip2.7 install
وسيقوم بتثبيت الوحدات النمطية. ومع ذلك ، فإن ما لم أستطع معرفة ذلك هو السبب في أن نسختي المثبتة حديثًا من Python لم تكن ترى ما كنت أقوم بتثبيته.
اتضح في Centos 7 أن هناك بالفعل Python2.7 و PIP2.7 في /usr/bin
مجلد. لتثبيت PIP لتوزيع Python الجديد الخاص بك ، تحتاج إلى إخبار Sudo على وجه التحديد بالذهاب إلى /usr/local/bin
sudo /usr/local/bin/python2.7 -m ensurepip
هذا يجب أن يتم تثبيت PIP2.7 في الخاص بك /usr/local/bin
مجلد جنبا إلى جنب مع نسختك من بيثون. الحيلة هي أنه عندما تريد تثبيت الوحدات النمطية ، تحتاج إما إلى تعديل Sudo $PATH
متغير لتضمين /usr/local/bin
أو تحتاج إلى التنفيذ
sudo /usr/local/bin/pip2.7 install <module>
إذا كنت ترغب في تثبيت وحدة جديدة. استغرق الأمر مني إلى الأبد أن أتذكر ذلك sudo
لم يكن يرى على الفور /usr/local/bin
.
تثبيت إصدارات متعددة من Python والحزم المعنية.
إصدار Python على نفس جهاز Windows: 2.7 و 3.4 و 3.6
تركيب جميع الإصدارات الثلاثة من بيثون :
- تثبيت Python 2.7 و 3.4 و 3.6 مع المسارات أدناه
مسار لجميع الإصدارات الثلاثة من بيثون :
- تأكد من أن متغير المسار (في متغيرات النظام) له مسارات أدناه - c: python27 ؛ c: python27 scripts ؛ c: python34 ؛ c: python34 scripts ؛ c: python36 ؛ c: Python36 scripts ؛
إعادة تسمية التنفيذيين للإصدارات :
- تم تغيير الاسم القابل للتنفيذ في Python في C: Python36 و C: Python34 إلى Python36 و Python34 على التوالي.
تم التحقق من موجه الأوامر مع جميع الإصدارات:
تثبيت الحزم بشكل منفصل لكل إصدار
السياق: Archlinux
عمل:
تثبيت Python2-PIP:
sudo pacman -S python2-pip
لديك الآن PIP2.7:
sudo pip2.7 install boto
اختبار (في حالتي كنت بحاجة إلى "بوتو"):
قم بتشغيل الأوامر التالية:
python2
import boto
النجاح: لا خطأ.
مخرج: كنترول+د
على سبيل المثال ، إذا قمت بتعيين إصدارات أخرى (على سبيل المثال 3.5) على أنها افتراضية وترغب في تثبيت PIP لـ Python 2.7:
- تنزيل PIP في https://pypi.python.org/pypi/pip (قطران)
- ملف UNXIP TAR
- قرص مضغوط إلى دليل الملف
- Sudo Python2.7 Setup.py تثبيت
يمكنك الانتقال على سبيل المثال C: Python2.7 Scripts ثم تشغيل CMD من هذا المسار. بعد ذلك يمكنك تشغيل PIP2.7 تثبيت yourpackage ...
سوف تثبيت الحزمة لهذا الإصدار من بيثون.
ها هو رأيي في المشكلة. يعمل لبيثون 3. الميزات الرئيسية هي:
- يتم تجميع كل نسخة بيثون من المصدر
- يتم تثبيت جميع الإصدارات محليًا
- لا يقلل من تثبيت Python الافتراضي لنظامك بأي شكل من الأشكال
- يتم عزل كل نسخة من Python مع VirtualEnv
والخطوات هي كما يلي:
إذا كان لديك العديد من إصدارات Python إضافية مثبتة بطريقة أخرى ، تخلص منها ، على سبيل المثال ، إزالة $ home/.local/lib/python3.x, ، وما إلى ذلك (أيضا تلك المثبتة عالميا). لا تلمس إصدار Python3 الافتراضي لنظامك.
قم بتنزيل مصدر لإصدارات Python المختلفة ضمن بنية الدليل التالية:
$HOME/ python_versions/ : download Python-*.tgz packages here and "tar xvf" them. You'll get directories like this: Python-3.4.8/ Python-3.6.5/ Python-3.x.y/ ...
في كل دليل "Python-3.xy/" ، افعل ما يلي (افعل ( ليس استخدم "sudo" في أي من الخطوات!):
mkdir root ./configure --prefix=$PWD/root make -j 2 make install virtualenv --no-site-packages -p root/bin/python3.x env
في "Python_versions/" قم بإنشاء ملفات مثل هذا:
env_python3x.bash: #!/bin/bash echo "type deactivate to exit" source $HOME/python_versions/Python-3.x.y/env/bin/activate
الآن ، في أي وقت ترغب في اختيار Python3.x ، قم
source $HOME/python_versions/env_python3x.bash
لدخول VirtualEnv
أثناء تواجدك في VirtualEnv ، قم بتثبيت حزم Python المفضلة لديك
pip install --upgrade package_name
للخروج من إصدار VirtualEnv و Python فقط اكتب "إلغاء تنشيط"
ربما يكون هذا هو الشيء الخطأ تمامًا الذي يجب القيام به (أنا بيثون نوب) ، لكنني دخلت للتو وتحرير ملف PIP
#!/usr/bin/env python3 <-- I changed this line.
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
لنظام التشغيل Windows على وجه التحديد:path to python.exe -m pip تثبيت packagename يعمل.
إذا كان لديك إصدارات متعددة بالإضافة إلى بنيات متعددة (32 بت ، 64 بت) ، فستحتاج إلى إضافة -32 أو -64 في نهاية الإصدار الخاص بك.
بالنسبة لنظام التشغيل Windows ، انتقل إلى CMD واكتب PY -وسيقوم بإنتاج الإصدارات التي قمت بتثبيتها. ستبدو القائمة كما يلي:
Installed Pythons found by py Launcher for Windows
-3.7-64 *
-3.7-32
-3.6-32
سيكون الأمر الكامل كمثال هو:
py -3.6-32 -m pip install (package)
إذا كنت ترغب في الحصول على مزيد من العمل ، لتثبيت إصدار محدد من حزمة على إصدار معين من Python ، استخدم == (الإصدار) بعد الحزمة. كمثال،
py -3.6-32 -m pip install opencv-python==4.1.0.25