обновлено: 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: Континуум Anaconda Option
Это в некоторой степени дубликат easy_install / pip или apt-get .
Для глобальных пакетов Python используйте Ubuntu Software Center, apt, apt-get или synaptic.
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 и wheel в virtualenv
Если вам нужна последняя версия или модуль отсутствует в репозитории Ubuntu, запустите virtualenv и используйте pip для установки пакета. Несмотря на то, что pip и setuptools объединены, IMO pip предпочтительнее, чем easy-install или distutils, потому что он всегда будет ждать, пока пакет полностью не будет загружен и собран, прежде чем скопировать его в вашу файловую систему, и он обновляет или удаляет бриз. Во многих отношениях он похож на apt-get в том смысле, что он обычно хорошо обрабатывает зависимости. Однако вам , возможно, придется самостоятельно обрабатывать некоторые зависимости, но после принятия PEP 513manylinux в индексе пакетов Python (PyPI) теперь есть бинарные файлы для популярных дистрибутивов Linux, таких как Ubuntu и Fedora .например, как упомянуто выше для NumPy и SciPy, убедитесь, что вы установили gfortran, atlas-dev, blas-dev и lapack-dev из репозитория Ubuntu. Например, и NumPy, и SciPy теперь по умолчанию распространяются для Ubuntu в качестве manylinuxколес , используя вместо этого OpenBLAS атлас. Вы все еще можете построить их из исходного кода, используя параметры 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 или wheel в свой личный профиль, используя --userсхему установки с pip. Вы можете использовать это, чтобы обновить pip для личного использования, как JF Sebastian указал в своем комментарии к другому ответу . ПРИМЕЧАНИЕ: -mдействительно необходимо только в MS Windows при обновлении pip .
python -m pip install --user pip setuptools wheel virtualenv
Более новые версии pip автоматически кэшируют колеса, поэтому следующее полезно только для более старых версий pip. Поскольку вы можете в конечном итоге установить их много раз, рассмотрите возможность использования колеса с pip для создания рулевой рубки. Колесо уже включено в virtualenvначиная с версии 13.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 с установками Python distutilsприведет к установке пакетов со значением site.USERBASEили туда, куда вы хотите. Более новые версии pip также имеют --userопцию. Не используйте sudo!
pip install --user virtualenv
Если ваша версия pip для Linux слишком старая, вы можете передать параметры настройки, используя --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.
Используйте Continuum Anaconda Python для математических, научных, личных или личных проектов
Если вы используете Python для математики, науки или данных, то для IMO действительно хорошим вариантом будет Anaconda-Python Distribution или более простой дистрибутив miniconda, выпущенный Anaconda, Inc. (ранее известный как Continuum Analytics ) . Хотя использование Anaconda для личных проектов может принести пользу любому, установка по умолчанию включает более 500 математических и научных пакетов, таких как NumPy, SciPy, Pandas и Matplotlib , в то время как miniconda устанавливает только Anaconda-Python и менеджер среды conda. Анаконда устанавливается только в свой личный профиль, то есть: /home/<user>/ и изменяет ваш ~/.bashrcили ~/.bash_profileпредварять путь Анаконды к вашим личнымам $PATH рекомендует поискconda.shв вашем, ~/.bashrcкоторый позволяет вам использовать conda activate <env|default is base>anaconda - это влияет только на вас - ваш системный путь не изменяется . Поэтому вам не нужен root-доступ или 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в среде Anaconda, b / c, вам придется более тщательно управлять зависимостями пакетов. Другим вариантом pipв среде conda является использование канала conda-forge., но также лучше всего делать это в свежей среде conda с conda-forge в качестве канала по умолчанию. В крайнем случае, если вы не можете найти пакет нигде, кроме 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 на канале Ancononda conda-forge .
эпилог
Существует много вариантов поддержки ваших проектов Python в Linux в зависимости от ваших личных потребностей и доступа. Однако, если есть что-то, что я надеюсь, вы откажетесь от этого ответа, что вам почти никогда не нужно будет использовать sudoдля установки пакетов Python . Использование sudoдолжно быть запахом для вас, что что-то не так. Вы были предупреждены.
Удачи и счастливого кодирования!