Ubuntu + virtualenv = путаница? virtualenv ненавидит dist-пакеты, хочет пакеты сайта

Можно попробовать dotImage, один из продуктов моей компании, который включает объект для передискретизации изображения, который имеет 18 типов фильтра для различных уровней качества.

Типичное использование:

// BiCubic is one technique available in PhotoShop
ResampleCommand resampler = new ResampleCommand(newSize, ResampleMethod.BiCubic);
AtalaImage newImage = resampler.Apply(oldImage).Image;

, кроме того, dotImage включает 140 некоторые нечетные команды обработки изображений включая многие фильтры, подобные тем в PhotoShop, если это - то, что Вы ищете.

14
задан lostincode 31 May 2010 в 03:04
поделиться

3 ответа

У меня возникнет соблазн взломать его, сделав site-packages ссылкой на dist-packages, но я предполагаю, что это может повлиять на другие случаи, когда вы хотите установить какое-либо расширение, отличное от ubuntu расст. Я не могу придумать другого ответа на 1, кроме настройки исходных кодов virtualenv (поскольку ubuntu и virtualenv настолько популярны, что я не удивлюсь, обнаружив, что измененные версии уже существуют).

Re 2, если вы используете / usr / local / bin / python вы должны использовать / usr / local версию библиотеки (включая пакеты для сайтов) и, наоборот, если вы используете /usr/bin/python.

Re 3, там что-то будет, если вы когда-либо устанавливали расширение для / usr / bin / python из источников (не через easy_install или из дистрибутива ubuntu).

К вопросу 4, да, более ранние записи в пути имеют приоритет.

К вопросу 5,

9
ответ дан 1 December 2019 в 08:17
поделиться

Что ж, у меня есть Ubuntu 9.04, и я быстро попытался создать пару песочниц с пакетами сайтов и одну без них. И все работает нормально.

Единственное различие в моем подходе - это то, что я использовал пакет Ubuntu python-virtualenv (1.3.3). И предположим, что команда Ubuntu настроила его для соответствия настройкам Ubuntu.

Подводя итог, на время отключите easy_installed virtualenv, используйте упакованный python-virtualenv и посмотрите, соответствует ли это вашим ожиданиям.

В Фактически, мы без проблем используем аналогичную установку для производства. Остальное уже ответил Алекс.

2
ответ дан 1 December 2019 в 08:17
поделиться

Я считаю, что ответ Майка Орра из списка рассылки virtual-env кажется лучшим. Обратите внимание, что OP опубликовал этот вопрос в обоих местах.

Исходное содержание письма:

Много лет назад Debian создал / usr / local / lib / pythonVERSION / site-packages, и скомпилировал двоичный файл Python, чтобы включить его в поиск по умолчанию дорожка. Ubuntu, как обычно, последовала примеру Debian. Питон разработчикам это не понравилось, потому что это может помешать локально установленный / usr / local / bin / python с использованием тех же пакетов сайта каталог. Ubuntu окончательно решила отказаться от site-пакетов и использовать dist-packages вместо этого, имя, которое они придумали, чтобы он не ни во что не вмешиваться. История приключений где-то там, если вы погуглите, где-нибудь в системе отслеживания ошибок Python или distutils SIG или

Система работает, по крайней мере, если вы используете пакет Ubuntu virtualenv. У некоторых людей были проблемы с использованием локально установленного virtualenv на Ubuntu, потому что магические записи sys.path не добавлялись или что нибудь. Я не уверен насчет --no-site-packages, потому что никогда не использую этот вариант: я запускаю PIL и mysqldb из пакетов Ubuntu, потому что он иногда бывает сложно скомпилировать их зависимости от C. (Нужен правильные файлы заголовков, Python игнорирует файлы заголовков и т. д.)

Итак, пакеты Python Ubuntu входят в / usr / lib / pythonVERSION / dist-packages. Или эта поддержка Python каталог по какой-то причине. Локально установленные пакеты Python входят в / usr / local / lib / pythonVERSION / dist-packages по умолчанию. Всякий раз, когда я установить систему Ubuntu 9.04, которую я запустил:

$ sudo apt-get install python-setuptools (6.0c9) $ sudo apt-get install python-virtualenv (1.3.3) $ sudo easy_install pip $ sudo pip install virtualenvwrapper

Виртуальные пакеты работают нормально, хотя я не пробовал --no-site-packages.

Я пытаюсь запустить virtualenv, а --no-site-packages флаг похоже, ничего не делает с убунту. Я установил virtualenv 1.3.3 с easy_install (который я обновил до setuptools 0.6c9)

Обе версии находятся в Ubuntu 9.04, так что вы усложняете задачу самостоятельно, установив их локально.

и все остальное похоже, установлен в /usr/local/lib/python2.6/dist-packages

Да

Я предполагаю, что при установке пакета с помощью apt-get он помещается в / usr / lib / python2.6 / dist-packages /?

Да

  1. Является ли он первым приходит первым обслуживает на пути? Если у меня новее версия пакета XYZ, установленная в /usr/local/lib/python2.6/dist- пакеты / и более старые (из репозиториев ubuntu / apt-get) в / usr / lib / python2.6 / dist-packages, который импортируется при импорте xyz? Я предполагаю, что это основано на списке путей, да?

sys.path сканируется по порядку. Забавно только то, что .pth яйца попасть на путь раньше или позже, чем ожидают некоторые люди. Но если вы используете pip для всего, что он может делать (т.е. кроме установки pip сам, предварительно скомпилированные яйца и снимок локального каталога, скопируйте, а не ссылку на яйцо), в любом случае у вас не будет много яиц .pth.

  1. Какого черта это так сбивает с толку? Есть что-то, что я отсутствует здесь?

Это плохо документировано. Я выяснил это при сканировании Интернета.

  1. Повлияет ли это также на pip?

Да, pip будет автоматически установлен на / usr / local / lib / pythonVERSION / site-packages. Используйте "pip install -E $ VIRTUAL_ENV packagename "для установки в virtualenv.

17
ответ дан 1 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: