На самом деле нет ни одного «ответа» на этот вопрос, но определенно есть несколько полезных понятий, которые могут помочь вам принять решение.
Первый вопрос, на который нужно ответить в вашем случае использования: «Хочу ли я использовать системный Python?» Если вы хотите использовать Python, распространяемый вместе с вашей операционной системой, то использовать метод установки apt-get может быть просто хорошо. Однако, в зависимости от способа распространения операционной системы, вам все равно придется задать еще несколько вопросов, таких как «Хочу ли я установить несколько версий этого пакета?» Если ответ да, то, вероятно, не стоит использовать что-то вроде apt. Dpkg в значительной степени просто распакует архив в корне файловой системы, так что именно сопровождающий пакета должен убедиться, что пакет устанавливается безопасно при минимальных допущениях. В случае большинства пакетов Debian я бы предположил (кто-то может поправить меня здесь), что они просто распаковывают и предоставляют пакет верхнего уровня.
Например, скажем, пакет "virtualenv", вы получите /usr/lib/python2.x/site-packages/virtualenv
. Если вы установите его с easy_install
, вы получите что-то вроде /usr/lib/python2.x/site-packages/virtualenv.egg-link
, которое может указывать на /usr/lib/python2.x/site-packages/virtualenv-1.2-2.x.egg
, которое может быть каталогом или молнией. Pip делает нечто подобное, хотя он не использует яйца и вместо этого помещает пакет верхнего уровня прямо в каталог lib
.
Возможно, я не в курсе, но дело в том, что каждый метод учитывает разные потребности. Вот почему такие инструменты, как virtualenv, полезны, так как они позволяют вам помещать в песочницу ваши библиотеки Python, так что вы можете иметь любую нужную комбинацию библиотек и версий.
Setuptools также позволяет устанавливать пакеты как многоверсионные, что означает, что единственное мо dule_name.egg-link
не создано. Для импорта этих пакетов вам нужно использовать pkg_resources и функцию __import__
.
Возвращаясь к исходному вопросу, если вы довольны системным питоном и планируете использовать virtualenv и pip для создания сред для различных приложений, тогда установка virtualenv и / или pip на системном уровне с помощью apt-get представляется совершенно уместной. , Однако следует предостеречь, что если вы планируете обновить свои дистрибутивы Python, это может иметь волновой эффект через ваши virtualenvs, если вы вернетесь к пакетам своего системного сайта.
Я должен также упомянуть, что ни один из этих вариантов по своей природе не лучше, чем другие. Они просто используют разные подходы. Использование системной версии является отличным способом установки приложений Python, но это может быть очень сложный способ разработки с Python. Простота установки и настройки очень удобна в мире без virtualenv, но если вам нужно использовать разные версии одной и той же библиотеки, она также становится довольно громоздкой. Pip и virtualenv действительно действуют как виртуальная машина. Вместо того, чтобы устанавливать вещи рядом, вы просто создаете совершенно новую среду. Недостатком здесь является то, что через 30+ virtualenvs вы могли бы использовать довольно много дискового пространства и загромождать свою файловую систему.
Как вы можете видеть, со многими вариантами трудно сказать, какой метод использовать, но с небольшим исследованием ваших вариантов использования вы сможете найти метод, который работает.