Ответ 1
Ничего себе, это довольно набор вопросов. Многие из них действительно заслужили бы свой собственный вопрос SO более подробно. Я сделаю все возможное:
Прежде всего, это virtualenv и pip должно быть в состоянии использования сейчас?
Да, хотя они не обслуживают всех. Пип и virtualenv (наряду со всем остальным в управлении пакетами Python) далеки от совершенства, но они широко используются и зависят от него тем не менее.
Как должен быть установлен virtualenv? Я не совсем готов в это поверить свернутый, как объяснено в другом месте.
Ответ, который вы связываете, является сложным, потому что он пытается вообще не вносить какие-либо изменения в вашу глобальную установку Python и устанавливать все в ~/.local
. Это имеет некоторые преимущества, но сложнее настроить. Он также устанавливает virtualenvwrapper, который представляет собой набор удобных сценариев bash для работы с virtualenv, но не нужен для использования virtualenv.
Если вы находитесь на Ubuntu, aptitude install python-setuptools
, за которым следует easy_install virtualenv
, вы получите рабочую виртуальную версию без ущерба для вашей глобальной среды python (если только у вас не установлен пакет виртуального виртуального пакета Ubuntu, который я не рекомендую поскольку это, скорее всего, старая версия).
Есть ли набор проверенных инструкций как установить matplotlib в виртуальная среда? По какой-то причине он всегда хочет скомпилировать его здесь вместо того, чтобы просто устанавливать пакет, и он всегда заканчивается неудачей (даже после build-dep, который занял 250 МБ дискового пространства). После целой кучи предупреждения, которые он печатает src/mplutils.cpp: 17: ошибка: 'vsprintf не было объявлено в этой области.
Он "всегда хочет скомпилировать", потому что pip, по дизайну, устанавливается только из исходного кода, он не устанавливает предварительно скомпилированные двоичные файлы. Это спорный выбор, и, вероятно, это основная причина, по которой пип видел широкое применение среди веб-разработчиков Python, которые используют более чистые пакеты Python и обычно разрабатывают и развертывают в средах POSIX, где стандартная рабочая цепочка компиляции.
Причина выбора дизайна заключается в том, что предоставление предварительно скомпилированных двоичных файлов имеет проблему комбинаторного взрыва с различными платформами и построение архитектур (включая версию python, UCS-2 и UCS-4 python, 32 против 64-разрядных...). То, как easy_install находит правильный двоичный пакет в работе PyPI, большую часть времени, но не учитывает все эти факторы и может сломаться. Таким образом, pip просто избегает этой проблемы (заменив ее требованием, чтобы у вас была рабочая среда компиляции).
Во многих случаях пакеты, для которых требуется компиляция C, также имеют более медленное расписание релизов, и это приемлемо для просто устанавливать для них пакеты ОС. Однако это не позволяет работать с разными версиями в разных virtualenvs.
Я не знаю, что вызывает вашу ошибку компиляции, она работает для меня (на 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" необходима, чтобы получить самую последнюю версию из-за matplotlib необычных URL загрузки в PyPI.
Как инструмент взаимодействует с setup.py? пип должен заменить easy_install, но это не понятно независимо от того, является ли это более или менее сложная взаимосвязь.
Файл setup.py
является соглашением distutils, стандартным решением для управления пакетами Python. distutils
не хватает некоторых ключевых функций, а setuptools - широко используемый сторонний пакет, который "охватывает и расширяет" distutils для предоставления некоторых дополнительных функций. setuptools
также использует setup.py
. easy_install
является установщиком в комплекте с setuptools. Разработка Setuptools застопорилась в течение нескольких лет, а distribute была вилкой setuptools для исправления некоторых давних ошибок. В конце концов, вилка была разрешена слияние дистрибутива обратно в setuptools, а setuptools теперь снова активен (с новым сопровождающим).
distutils2 была в основном переписанной новой версией distutils
, которая пыталась включить лучшие идеи из setuptools/distribute и должен был стать частью стандартной библиотеки Python. К сожалению, это не удалось, поэтому на данный момент setuptools остается стандартом де-факто для упаковки Python.
Pip заменяет easy_install, но он не заменяет setuptools; он требует setuptools и строит поверх него. Таким образом, он также использует setup.py
.
Является ли virtualenv только для разработки режиме, или если пользователи также устанавливают это?
На это нет единого правильного ответа; его можно использовать в любом случае. В конце концов, это действительно ваш выбор пользователя, и ваше программное обеспечение идеально должно быть установлено внутри или вне виртуального; хотя вы можете выбрать документ и подчеркнуть один подход или другое. Это зависит в значительной степени от того, кто ваши пользователи и в каких средах они могут потребоваться для установки вашего программного обеспечения.
Будет ли полученный пакет установленный с минимальным требования (например, текущее яйцо), или он будет установлен с источниками & двоичные файлы для всех зависимостей плюс все инструменты построения, создающие гигабайт монстра в виртуальной среде?
Если пакет, требующий компиляции, устанавливается через pip, его необходимо скомпилировать из источника. Это также относится к любым зависимостям, которые требуют компиляции.
Это не связано с вопросом о том, используете ли вы virtualenv. easy_install
доступен по умолчанию в virtualenv и отлично работает. Он может устанавливать предварительно скомпилированные двоичные яйца, как и за пределами virtualenv.
Пользователь должен будет изменить свои $PATH и $PYTHONPATH для запуска если он установлен в виртуальная среда?
Чтобы использовать что-либо, установленное в virtualenv, вам нужно использовать двоичный код python в каталоге virtualenv bin/
(или другом script, установленном в virtualenv, который ссылается на этот двоичный файл). Наиболее распространенный способ сделать это - использовать virtualenv activate
или activate.bat
script, чтобы временно изменить оболочку PATH
, поэтому сначала будет каталог virtualenv bin/
. Изменение PYTHONPATH
обычно не является полезным или необходимым с помощью virtualenv.
Мне нужно создать script из текстовая строка для virtualenv, как в плохие старые дни?
Нет.
Что такое С# egg = URL-адрес пакета синтаксис? Это не часть стандартный URL, так почему это не отдельный параметр?
"# egg = имя-проект-версия" взлома фрагмента URL-адреса был сначала представленный setuptools и easy_install. Поскольку easy_install срывает ссылки из Интернета, чтобы найти дистрибутивы кандидатов для установки для данного имени и версии пакета, этот хак позволил авторам пакетов добавлять ссылки на PyPI, которые easy_install мог понять, даже если они не использовали стандартные соглашения об именах easy_install для своих файлов.
Где @rev включен в URL? В конец, я полагаю, но документация не ясна об этом ( "Вы также можете включить @rev в URL" ).
Пара предложений после этого цитируемого фрагмента есть ссылка на "читать формат файла требований, чтобы узнать о других функциях". Функция @rev
полностью документирована и продемонстрирована там.
То, что предполагается понимать используя существующий файл требований как "как своего рода шаблон для нового file"? Это может означать любое количество вещи.
В самом следующем предложении говорится: "Он сохранит пакеты, перечисленные в файле devel-req.txt, в порядке и сохранит комментарии". Я не уверен, что было бы лучшим кратким описанием.