Який найкращий спосіб встановити пакети Python?


41

Який найкращий спосіб встановити пакети Python в Ubuntu 11? Я нещодавно перейшов на Ubuntu і хочу вивчити кращі практики.

У контексті я шукаю встановити пакет tweeststream, але цього не бачив у своєму менеджері пакетів Synaptic. Також я дуже новачок у програмуванні, але зазвичай можу слідувати разом із зразками коду.


Відповіді:


30

Я думаю, що найкращим способом для вас було б встановити систему упаковки Python на зразок "python-pip". Ви можете встановити його за допомогою Synaptic або Ubuntu Software Center.

Pip дозволить вам легко встановити та видалити пакети Python, просто як pip install package. У вашому випадку це буде щось подібне з терміналу:

sudo pip install tweeststream

3
Це добре для простих пакунків, але не так добре для великих пакетів, наприклад, numpy
hayd

@hayd: чому? Це пов’язано з askubuntu.com/questions/595366/…
naught101

2
@ naught101 Я думаю, що я, мабуть, мав на увазі scipy, не впевнений, що це пов'язано ... схоже, піп занадто пізно на шляху python. Я настійно рекомендую використовувати анаконду / конду, це набагато перевершує ІМО на піп.
гайд

2
Використання ІМХО sudo pip <anything>слід застосовувати дуже обережно. Оскільки tweetstreamйого немає в Центрі програмного забезпечення Ubuntu , рекомендую використовувати virtualenv . tweetstream - хsetup.py вимагає , anyjsonякий є Ubuntu пакет . Не встановлення tweetstream у програмі virtualenvможе призвести anyjsonдо відмови інших програм Ubuntu, залежних від . Виправлення неполадок важко.
Марк Мікофскі

9
Повторюся: не використовуйте sudo pipUbuntu. @MarkMikofski: вам не потрібні virtualenv (якщо ви цього не хочете з певних причин). python -mpip install --user package-nameможе встановити пакет packafe-nameдля поточного користувача. Якщо є складні (великі розширення C); ви можете встановити їх за допомогою apt-get, щоб уникнути встановлення залежностей збірки, якщо це не потрібно.
jfs

37

оновлено: 2019-05-11: Цей пост в основному згадується virtualenv, але згідно з документом Python про встановлення модуля , оскільки Python 3.5 " venvзараз рекомендується використання для створення віртуальних середовищ", а virtualenvальтернатива для версій Python до 3.4 .

оновлено: 2018-08-17: з моменту використання conda-4.4.0conda для activateанаконди на всіх платформах

оновлено: 2017-03-27: PEP 513 - manylinuxбінарні файли для PyPI

оновлено: 2016-08-19: Варіант безперервного анаконда

Це дещо дублікат easy_install / pip або apt-get .

Для глобальних пакетів Python використовуйте програмний центр Ubuntu, apt, apt-get або синаптик

Ubuntu використовує Python для багатьох важливих функцій, тому втручання в Python може пошкодити вашу ОС. Це основна причина , чому я ніколи не використовую pipв моїй системі Ubuntu, але замість цього я використовую або Ubuntu Software Center, синаптичні , apt-getабо новіше тільки apt, що все за замовчуванням установки пакетів з репозиторію Ubuntu . Ці пакети тестуються, як правило, попередньо складені, тому вони встановлюються швидше і в кінцевому рахунку розроблені для Ubuntu. Крім того, всі необхідні залежності також встановлюються та ведеться журнал встановлень, щоб їх можна було повернути назад. Я думаю, що більшість пакетів мають відповідні репост Launchpad, щоб ви могли подавати проблеми.

Ще одна причина використання будь-яких пакетів Ubuntu - це те, що іноді ці пакети Python мають різні назви залежно від того, звідки ви їх завантажили. Python-chardet - приклад пакету, який свого часу був названий однією річчю в PyPI, а іншою - у сховищі Ubuntu. Тому робити щось подібне pip install requestsне зрозуміє, що chardet вже встановлений у вашій системі, оскільки версія Ubuntu має іншу назву, і, отже, встановіть нову версію, яка пошкодить вашу систему незначним чином, але все-таки, чому ви це зробите.

Загалом, ви хочете встановити лише довірений код у вашу ОС. Тож вам слід нервувати введення тексту $ sudo pip <anything-could-be-very-bad>.

Нарешті, деякі речі просто простіше встановити за допомогою будь-яких пакетів Ubuntu. Наприклад, якщо ви спробуєте pip install numpyвстановити numpy & scipy, якщо ви вже не встановили gfortran, atlas-dev, blas-dev та lapack-dev, ви побачите нескінченний потік помилок компіляції. Однак встановити numpy & scipy через сховище Ubuntu так просто, як ...

$ sudo apt-get install python-numpy python-scipy

Вам пощастило, адже ви використовуєте Ubuntu, один з найбільш широко підтримуваних і часто оновлених дистрибутивів. Швидше за все, кожен пакет Python, який вам знадобиться, знаходиться у сховищі Ubuntu і, ймовірно, вже встановлений на вашій машині. І кожні 6 місяців випускатиметься новий цикл пакунків із останньою дистрибуцією Ubuntu.

Якщо ви на 100% впевнені, що пакет ні в якому разі не заважатиме вашій системі Ubuntu, то ви можете встановити його за допомогою pip, і Ubuntu досить приємно, щоб ці пакети були окремими від пакетів дистрибутива, помістивши пакети дистрибутивів у папку з назвою dist-packages/. У сховищі Ubuntu є як pip, virtualenv, так і setuptools. Однак я другою пропозицією Войцеха використовувати virtualenv.

Для особистих проектів Python використовуйте pip and wheel у virtualenv

Якщо вам потрібна остання версія, або модуль не знаходиться у сховищі Ubuntu, тоді запустіть virtualenv і використовуйте pip для встановлення пакета. Хоча pip та setuptools об'єдналися, IMO-pip віддається перевазі над простою установкою або distutils, оскільки він завжди буде чекати, поки пакет повністю завантажується та складеться перед тим, як скопіювати його у вашу файлову систему, і це зробить оновлення або видалення вітерця. Багато в чому схожий на apt-get, тим, що він, як правило, добре справляється із залежностями. Однак вам , можливо, доведеться самостійно впоратися з деякими залежностями, але з моменту прийняття PEP 513 зараз існують manylinuxбінарні файли в індексі пакетів Python (PyPI) для таких популярних дистрибутивів Linux, як Ubuntu та Fedora .наприклад, як згадувалося вище для NumPy та SciPy, переконайтеся, що ви встановили gfortran, atlas-dev, blas-dev та lapack-dev із сховища Ubuntu. Наприклад, і NumPy, і SciPy тепер розподіляються для Ubuntu як manylinuxколеса за замовчуванням, використовуючи OpenBLAS ATLAS. Ви все ще можете їх створити з джерела, використовуючи параметри pip --no-use-wheelабо--no-binary <format control> .

~$ sudo apt-get install gfortran libblas-dev liblapack-dev libatlas-dev python-virtualenv
~$ mkdir ~/.venvs
~$ virtualenv ~/.venvs/my_py_proj
~$ source ~/.venvs/my_py_proj/bin/activate
~(my_py_proj)$ pip install --no-use-wheel numpy scipy

Дивіться наступний розділ "Ви не ввійшли sudoers" нижче для встановлення оновлених версій pip, setuptools, virtualenv або колеса до вашого особистого профілю, використовуючи --userсхему інсталяції з pip. Ви можете використати це для оновлення піп для особистого використання, як зазначив JF Себастьян у своєму коментарі до іншої відповіді . ПРИМІТКА: -mце дійсно потрібно лише в MS Windows під час оновлення файлів .

python -m pip install --user pip setuptools wheel virtualenv

Новіші версії pip автоматично кешують колеса, тому наступна корисна лише для старих версій pip. Оскільки ви можете закінчити встановлення цих багато разів, подумайте про використання колеса з піпсом для створення рульової рубки. Колесо вже включено в virtualenvv13.0.0, тому якщо ваша версія virtualenvзанадто стара, вам, можливо, потрібно буде спочатку встановити колесо.

~(my_py_proj)$ pip install wheel  # only for virtualenv < v13.0.0
~(my_py_proj)$ pip wheel --no-use-wheel numpy scipy

Це створить файли двійкових коліс <cwd>/wheelhouse, використовуйте -dдля вказівки іншого каталогу. Тепер, якщо ви запускаєте інший virtualenv і вам потрібні ті самі пакети, які ви вже створили, ви можете встановити їх з вашої колісної кімнати, використовуючиpip install --find-links=<fullpath>/wheelhouse

Прочитайте Про встановлення модулів Python в документації на Python та Про встановлення пакетів на головній сторінці індексу пакунків Python . Також pip , venv , virtualenv та колесо .

Якщо ви не ввійшли sudoersі virtualenvне встановлені.

Інший варіант використання віртуального середовища, або якщо ви використовуєте спільний доступ Linux без привілеїв root, то, використовуючи схеми установки Python --userабо --home=<wherever-you-want>Python distutils, встановіть пакети на значення site.USERBASEабо куди хочете. Новіші версії pip також мають --userможливість. Не використовуйте sudo!

pip install --user virtualenv

Якщо ваша версія Linux pip занадто стара, ви можете передати параметри налаштування, використовуючи, --install-optionщо корисно для передачі користувацьких параметрів до деяких setup.pyсценаріїв для деяких пакетів, що створюють розширення, наприклад встановлення PREFIX. Можливо, вам доведеться просто витягнути дистрибутив і використовувати distutilsдля встановлення пакета старошкільний спосіб, набравши текст python setup install [options]. Читання документації щодо встановлення та distutilsдокументації може допомогти.

Python є досить хороший , щоб додати site.USERBASEдо вашого PYTHONPATHпопереду що - небудь ще, так що зміни будуть тільки ефект , який ви. Популярне місце для --homeє ~/.local. Точну структуру файлів та конкретно, де розміщені ваші сайти, перегляньте посібник із встановлення модуля Python . Примітка : якщо ви використовуєте --homeсхему установки , то вам може знадобитися , щоб додати його в PYTHONPATHзмінну оточення , використовуючи exportв вашому .bashrc, .bash_profileчи в оболонці для локалізованих пакетів будуть доступні в Python.

Використовуйте континуум Anaconda Python для математичних, наукових, даних чи особистих проектів

Якщо ви використовуєте Python для математики, науки або даних, то IMO справді хорошим варіантом є дистрибуція Anaconda-Python або більш базовий дистрибутив мініконди, випущений Anaconda, Inc. (раніше відомий як Continuum Analytics ) . Хоча кожен може отримати користь від використання Anaconda для особистих проектів, установка за замовчуванням включає понад 500 математичних та наукових пакетів, таких як NumPy, SciPy, Pandas та Matplotlib , в той час як miniiconda встановлює лише Anaconda-Python та менеджера середовища conda. Анаконда встановлюється лише у вашому особистому профілі, тобто: /home/<user>/ і змінює ваш ~/.bashrcабо ~/.bash_profileдоповнює шлях Анаконда до вашого особистого, $PATH рекомендує отримати джерелоconda.shу вашому, ~/.bashrcщо дозволяє вам conda activate <env|default is base>запускати анаконда - це впливає лише на вас - ваш системний шлях не змінюється . Тому вам не потрібен кореневий доступ чи sudoвикористання Anaconda! Якщо ви вже додали Anaconda-Python, miniconda або conda до свого особистого шляху, тоді вам слід видалити PATHекспорт зі свого ~/.bashrcта оновити нову рекомендацію , тож ваша система Python знову стане першою.

Це дещо схоже на --userваріант, який я пояснив в останньому розділі, за винятком того, що він стосується Python в цілому, а не лише для пакетів. Тому Anaconda повністю відокремлена від вашої системи Python , вона не заважатиме вашій системі Python, і лише ви можете її використовувати або змінити. Оскільки він встановлює нову версію Python та всіх його бібліотек, вам знадобиться щонайменше 200 Мб місця, але це дуже розумно щодо кешування та керування бібліотеками, що важливо для деяких цікавих речей, які ви можете зробити з Anaconda.

Anaconda лікує колекцію бінарних файлів і бібліотек Python, необхідних залежностям в онлайн-сховищі (раніше називався binstar ) , а також вони розміщують пакунки користувачів як різні "канали". Менеджер пакунків, який використовується Anaconda, condaза замовчуванням встановлює пакети з Anaconda, але ви можете подати сигнал про інший "канал", використовуючи -cопцію.

Встановіть пакети condaтак само pip:

$ conda install -c pvlib pvlib  # install pvlib pkg from pvlib channel

Але condaможна зробити набагато більше! Він також може створювати та керувати віртуальними середовищами так само, як virtualenv. Тому, оскільки Anaconda створює віртуальне середовище, pipменеджер пакунків може використовуватися для установки пакетів з PyPI в середовище Anaconda без root або sudo. Ви НЕ використовувати sudoз Анаконди! Увага! Будьте обережні, хоч при змішуванні pipта condaв анакондах, з / п, вам доведеться більш обережно керувати залежностями пакунків. Іншим варіантом, який pipзнаходиться в конденсаційному середовищі, є використання каналу конденсації, але також найкраще робити це в свіжому середовищі конди, де кондо-кування є каналом за замовчуванням. В крайньому випадку, якщо ви не можете знайти пакет ніде, окрім PyPI, подумайте про використання, --no-depsа потім встановіть інші залежності вручну, використовуючи conda.

Анаконда також деяким чином схожа на Ruby RVM, якщо ви знайомі з цим інструментом. Anaconda condaтакож дозволяє створювати віртуальні середовища з різними версіями Python . наприклад : conda create -n py35sci python==3.5.2 numpy scipy matplotlib pandas statsmodels seabornстворить стек наукових даних / даних, використовуючи Python-3.5 в новому середовищі, званому py35sci. Ви можете перемикати середовища за допомогою conda. Так як Конда-4.4.0, тепер це відрізняється , щоб , virtualenvякий використовує source venv/bin/activate, але попередній Конда-4.4.0 ці condaкоманди були так само , як virtualenvі використовується також source:

# AFTER conda-4.4 
~/Projects/myproj $ conda activate py35sci

# BEFORE conda-4.4 
~/Projects/myproj $ source activate py35sci

Але зачекайте, що є більше! Anaconda також може встановлювати різні мови, такі як R для статистичного програмування з каналу Anacondar . Ви навіть можете налаштувати власний канал для завантаження дистрибутивів пакунків, створених для conda . Як уже згадувалося, conda-forge підтримує автоматизовану збірку багатьох пакетів на PyPI на каналі Anaconda conda-forge .

Епілог

Існує багато варіантів підтримки ваших проектів Python в Linux залежно від ваших особистих потреб та доступу. Однак, якщо є якась річ, я сподіваюся, що ви відмовитесь від цієї відповіді, це те, що вам майже ніколи не потрібно використовувати sudoдля установки пакетів Python . Використання sudoмає бути для вас запахом, що щось не так. Вас попередили

Удачі та щасливого кодування!


Я хотів би прочитати це, перш ніж знищити Python в моїй системі, за sudoдопомогою pip. Чудовий запис, дякую за цю інформацію.
slhck

pip install numpyслід встановити всі залежності
Тимо

@Timo, як я вже згадував в оновленні 2017-03-27, оскільки PEP 513 був реалізований багатьма бінуарними файлами Linux, доступними на PyPI, які побудовані з OpenBLAS, тобто : вони мають необхідні залежності. Однак, як правило, pip install <package>буде встановлено лише залежність пакета Python, вказана в install_requiresрозділі setup.py. Наприклад: установка Jupyter не встановлюватиме Haskell бібліотека pandoc експортувати Jupyter ноутбуки , як LaTeX, і т.д.
Марк Mikofski

На відміну від цього, conda install <package>ймовірно, будуть встановлені всі залежності, включаючи C / C ++, FORTRAN тощо, навіть бібліотеки Haskell, оскільки conda не просто керує пакетами Python, як pip, він управляє середовищами. Тож якщо у вас була Anaconda або miniconda, тоді ви conda install Jupyterвстановлюєте все у файл рецептуmeta.yml , включаючи бібліотеку pandoc Haskell . Для отримання додаткової інформації дивіться PyPA
Mark Mikofski

10

На додаток до доповнення Novarchibald, загалом, гарна ідея створити віртуальне середовище для вашого проекту python та встановити залежності всередині. Це дозволяє краще контролювати залежності та їх версії. Щоб налаштувати віртуальне середовище, введіть:

virtualenv --no-site-packages --distribute my_python_project

Потім активуйте його за допомогою:

cd my_python_project
source bin/activate

На цьому етапі все, що ви встановите за допомогою pip, зберігатиметься у цьому віртуальному середовищі. Якщо ви хочете встановити щось глобально, то спочатку слід вийти з virtualenv за допомогою:

deactivate

Більше про virtualenv ви можете дізнатися тут .


1
Як варіант: використовуючи піп з каталогу віртуальних файлів virtualenv (тут my_python_project / bin / pip), ви підтримуєте це середовище, не потребуючи його "активації". Потім - за допомогою будь-якого зі скриптів, встановлених у кошику, використовується дане virutalenv. "activate" - це зручно лише для здійснення дзвінків на "python", "easy_install" та "pip", використовуючи для цього virtualenv конкретний бін.
Ян Вльчинський

Документи встановлення Python кажуть використовувати "pyvenv" для створення віртуальних середовищ, специфічних для проекту; але цей virtualenv - це відступ для проектів, які використовують старішу версію python, docs.python.org/3/installing/index.html?highlight=pip .
pbhj

2
Зауважте, що virtualenvваріанти --no-site-packagesта --distributeзастарілі в наш час і більше не мають ефекту.
Корм

4

На додаток до відповіді Zetah'a командою для встановлення python-pip з терміналу є:

sudo apt-get install python-pip

1

Спробуйте це GUI-рамки для PIP, розроблені за допомогою PyQt4

Рамка GUI для PIP, розроблена за допомогою PyQt4

Екран запуску

введіть тут опис зображення

Екран запуску містить параметри, щоб користувач міг вибрати процес, який він хоче провести.

Можна також вказати версію python, на якій він хоче виконати операції.

У меню файлів є параметри "Вийти" (ярлик: Ctrl + Q) та "Оновити списки", що оновлює файли ресурсів, що містять дані пакету.

Екран встановлення

введіть тут опис зображення

На екрані інсталяції є панель пошуку, яку користувач може використовувати для пошуку та встановлення потрібного пакету.

Екран оновлення

введіть тут опис зображення

На екрані оновлення відображається список пакунків, які застаріли і можуть бути оновлені.

Видалення екрана

введіть тут опис зображення

На екрані видалення відображається перелік пакунків, які встановлені в системі користувача і можуть бути видалені.

Вікно прогресу

введіть тут опис зображення

Вікно прогресу - це вбудований віджет терміналу для PIP-GUI, який відображає процеси, що працюють під час виконання операцій.


1
Ласкаво просимо до Ask Ubuntu! Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Кевін Боуен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.