Ух ты, это довольно много вопросов. Многие из них действительно заслуживают своего собственного вопроса SO с более подробной информацией. Я сделаю все возможное:
Прежде всего, это virtualenv и pip
должен быть в пригодном для использования состоянии
сейчас?
Да, хотя они не служат нуждам каждого. Pip и virtualenv (наряду со всем остальным в управлении пакетами Python) далеки от совершенства, но они широко используются и, тем не менее, зависят от них.
Как установить virtualenv?
Я не совсем готов поверить, что это так
запутанный, как объяснено в другом месте.
Ответ, который вы связываете, сложен, потому что он пытается вообще не вносить каких-либо изменений в вашу глобальную установку Python и вместо этого устанавливает все в ~/.local
. Это имеет некоторые преимущества, но сложнее в настройке. Также устанавливается virtualenvwrapper , который представляет собой набор удобных bash-скриптов для работы с virtualenv, но не обязателен для использования virtualenv.
Если вы работаете в Ubuntu, то aptitude install python-setuptools
, за которым следует easy_install virtualenv
, должны обеспечить вам работающую установку virtualenv без ущерба для вашей глобальной среды python (если только у вас не был установлен пакет Ubuntu virtualenv, который я не рекомендую как это скорее всего будет старая версия).
Есть ли набор проверенных инструкций
о том, как установить Matplotlib в
виртуальная среда? По какой-то причине
он всегда хочет скомпилировать это здесь
вместо того, чтобы просто установить пакет,
и это всегда заканчивается неудачей (даже
после build-dep который занял 250 МБ
дискового пространства). После целой связки
предупреждения это печатает
src / mplutils.cpp: 17: ошибка: vsprintf
не был объявлен в этой области.
Он "всегда хочет компилировать", потому что pip по своей природе устанавливается только из исходного кода, он не устанавливает предварительно скомпилированные двоичные файлы. Это спорный выбор и, вероятно, основная причина, по которой pip получил широкое распространение среди веб-разработчиков Python, которые используют более чистые пакеты Python и обычно разрабатывают и внедряют в средах POSIX, где стандартная рабочая цепочка компиляции.
Причиной выбора проекта является то, что обеспечение скомпилированных двоичных файлов имеет проблему комбинаторного взрыва с различными платформами и архитектурами сборок (включая версию Python, сборки UCS-2 и сборки Python UCS-4, 32 против 64-разрядных ...) То, как easy_install находит правильный бинарный пакет в PyPI, работает в большинстве случаев, но не учитывает все эти факторы и может сломаться. Так что pip просто избегает этой проблемы (заменив ее требованием, чтобы у вас была рабочая среда компиляции).
Во многих случаях пакеты, требующие компиляции C, также имеют более медленный график выпуска, и вместо них приемлемо просто установить пакеты ОС. Однако это не позволяет работать с разными версиями в разных virtualenv.
Я не знаю, в чем причина вашей ошибки компиляции, она работает для меня (в Ubuntu 10.10) с помощью этой серии команд:
virtualenv --no-site-packages tmp
. tmp/bin/activate
pip install numpy
pip install -f http://downloads.sourceforge.net/project/matplotlib/matplotlib/matplotlib-1.0.1/matplotlib-1.0.1.tar.gz matplotlib
Ссылка "-f" необходима для получения самой последней версии из-за необычных URL-адресов загрузки matplotlib в PyPI .
Как любой инструмент взаимодействует с
setup.py? Пипс должен заменить
easy_install, но не понятно
будь то дроп-ин или больше
сложные отношения.
Файл setup.py
представляет собой соглашение distutils , «решение» для управления пакетами стандартной библиотеки Python. В одном distutils
отсутствуют некоторые ключевые функции, а setuptools - это широко используемый сторонний пакет, который «охватывает и расширяет» distutils для предоставления некоторых дополнительных функций. setuptools
также использует setup.py
. easy_install
- это установщик в комплекте с setuptools. Разработка setuptools остановилась на несколько лет, и Distribu был форком setuptools для исправления некоторых давних ошибок. В конечном итоге ответвление было решено путем объединения дистрибутива обратно в setuptools, и разработка setuptools теперь снова активна (с новым сопровождающим).
distutils2 была в основном переписанной новой версией distutils
, которая пыталась включить лучшие идеи из setuptools / distribate, и должна была стать частью стандартной библиотеки Python. К сожалению, эта попытка не удалась, поэтому на данный момент setuptools остается фактическим стандартом для упаковки Python.
Pip заменяет easy_install, но не заменяет setuptools; он требует setuptools и строит поверх него. Таким образом, он также использует setup.py
.
Virtualenv только для развития
режим, или если пользователи также устанавливают
это?
На этот вопрос нет единственно правильного ответа; это может быть использовано в любом случае. В конце концов, это действительно выбор вашего пользователя, и в идеале ваше программное обеспечение должно быть в состоянии быть установлено внутри или вне виртуальной среды; хотя вы можете документировать и подчеркивать тот или иной подход. Это очень сильно зависит от того, кто ваши пользователи и в каких средах они могут установить ваше программное обеспечение.
Будет ли полученный пакет
установлен с минимальным
требования (как текущее яйцо),
или он будет установлен с источниками и
двоичные файлы для всех зависимостей плюс все
инструменты сборки, создающие гигабайт
монстр в виртуальной среде?
Если пакет, требующий компиляции, установлен через pip, его необходимо будет скомпилировать из исходного кода. Это также относится к любым зависимостям, требующим компиляции.
Это не связано с вопросом о том, используете ли вы virtualenv. easy_install
доступно по умолчанию в virtualenv и прекрасно работает там. Он может устанавливать предварительно скомпилированные бинарные яйца, так же, как и за пределами virtualenv.
Придется ли пользователям изменять свои
$ PATH и $ PYTHONPATH для запуска
результирующий пакет, если он установлен в
виртуальная среда?
Чтобы использовать что-либо, установленное в virtualenv, вам необходимо использовать двоичный файл python в каталоге bin/
virtualenv (или другой скрипт, установленный в virtualenv, который ссылается на этот двоичный файл). Наиболее распространенный способ сделать это - использовать скрипт activate
или activate.bat
virtualenv, чтобы временно изменить оболочку PATH
, чтобы каталог bin/
virtualenv был первым. Изменение PYTHONPATH
, как правило, не является полезным или необходимым с помощью virtualenv.
Нужно ли создавать скрипт из
текстовая строка для virtualenv, как в
плохие старые времена?
номер
Что такое с # egg = Package URL
синтаксис? Это не часть
стандартный URL, так почему бы не
отдельный параметр?
Взлом фрагмента URL "# egg = projectname-version" был впервые , введенным setuptools и easy_install . Так как easy_install очищает ссылки из Интернета, чтобы найти возможные дистрибутивы для установки для заданного имени и версии пакета, этот хак позволил авторам пакетов добавлять ссылки на PyPI, которые easy_install мог понять, даже если они не использовали стандартные соглашения об именах easy_install для своих файлов .
Где @rev включен в URL? В
конец, я полагаю, но
документация не ясно об этом
(«Вы также можете включить @rev в
URL ").
Через пару предложений после этого цитируемого фрагмента есть ссылка на «прочитайте формат файла требований , чтобы узнать о других функциях».Функция @rev
полностью документирована и продемонстрирована там.
Что следует понимать при использовании существующего файла требований как «в качестве шаблона для нового файла»?Это может означать любое количество вещей.
В самом следующем предложении говорится, что «оно будет содержать в порядке пакеты, перечисленные в devel-req.txt, и сохранит комментарии».Я не уверен, что было бы лучшим кратким описанием.