обновлено: 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
должно быть запахом для вас, что что-то не так. Вы были предупреждены.
Удачи и счастливого кодирования!