Добавление общих пакетов Python в несколько виртуальных машин

Текущий рабочий процесс Python

У меня есть pip , distribute , virtualenv и ] virtualenvwrapper установлен в мои пакеты сайтов Python 2.7 ( фреймворк Python, установленный в Mac OS X ). В моем ~ / .bash_profile у меня есть строка

export PIP_DOWNLOAD_CACHE=$HOME/.pip_download_cache

Это дает следующий рабочий процесс:

$ mkvirtualenv pip-test
$ pip install nose        # downloaded and installed from PyPi
$ pip install mock        # downloaded and installed from PyPi
$ mkvirtualenv pip-test2
$ pip install nose        # installed from pip's download cache
$ pip install mock        # installed from pip's download cache

Вопросы

Поскольку я не загружаю пакеты, которые были ранее установлены в другом virtualenv, это рабочий процесс экономит время и пропускную способность. Однако это не экономит место на диске, поскольку каждый пакет будет установлен в каждый virtualenv. Поэтому мне интересно:

  • Вопрос № 1 Есть ли модификация этого рабочего процесса, которая позволила бы мне сэкономить дисковое пространство за счет того, что несколько virtualenvs ссылаются на один пакет Python, который не установлен в моих пакетах сайта Python 2.7?

Я пробовал использовать add2virtualenv , который является частью virtualenvwrapper. Хотя это «добавляет указанные каталоги к пути Python для активного в настоящее время virtualenv», оно не добавляет никаких исполняемых файлов, находящихся в каталоге virtualenv / bin . Следовательно, следующее не удастся: {context.Response.Clear (); context.Response.ContentType = "...

Я генерирую изображение штрих-кода в качестве ответа от обработчика HTTP, например:

public void ProcessRequest(HttpContext context)
{
    context.Response.Clear();
    context.Response.ContentType = "image/Jpeg";
    MemoryStream ms = new MemoryStream();
    Bitmap objBitmap = GenerateBarcode(context.Request.Params["Code"]);
    objBitmap.Save(ms, ImageFormat.Jpeg);
    context.Response.BinaryWrite(ms.GetBuffer());
}

Я перехожу на http://www.MyWebsite.com/ MyProject / BarCode.aspx? Code = 12345678 , и он отлично работает. Точно так же я использую на моей веб-странице, и он отлично работает. Но я вставляю тот же тег изображения в электронное письмо в формате HTML, и он не отображается (по крайней мере, в MS Outlook 2007; я еще не тестировал другие почтовые клиенты .)

Я предполагаю, что это как-то связано с тем фактом, что я использую обработчик HTTP, поскольку другие статические изображения в электронном письме отображаются нормально. Как я могу исправить это, чтобы изображение отображалось? (Я могу' Просто используйте статическое изображение, потому что код определяется во время отправки электронного письма.)

Обновление:

Оказывается, я не заметил ключевой детали. Изображение не просто не отображается; скорее атрибут изображения src заменяется на " http://portal.mxlogic.com/images/transparent.gif ". Я определил, что использование расширений .aspx или .ashx запускает эту замену (или, возможно, любое расширение, кроме тех, которые ожидаются для изображений, таких как .gif или .jpg), и что включает строку запроса в URL также запускает это, даже если это стандартное расширение изображения. Я предполагаю, что это какая-то чрезмерная функция безопасности. Поэтому включение изображения вроде BarCode.aspx? Code = 12345678 просто не сработает.

Мне приходит в голову, что я мог бы сделать что-то вроде , а затем создайте обработчик для всех файлов с именем BarCode.jpg. Здесь 12345678 / не является фактическим путем, но это не имеет значения, поскольку я перенаправляю запрос обработчику и могу очистить значение кода от этого фальшивого пути в URL-адресе. Но мне, вероятно, придется изменить некоторые настройки IIS, чтобы запросы на файлы .jpg обрабатывались ASP.NET, и я бы хотел убедиться, что другие JPEG, кроме моего BarCode.jpg, загружаются нормально. .

Честно говоря, я не уверен, что это того стоит.

6
задан Tim Goodman 13 September 2010 в 06:02
поделиться