Я работаю над Ubuntu 12.04 x64 с Python 2.7.3, а я просто портировал сайт Django 1.5.4 на virtualenv 1.7.1.2.Python virtualenv очень медленный
Однако я заметил, что команды Python намного медленнее, когда они запускаются из активного виртуального пользователя, чем при использовании установки Python в системе. Например. runnig python manage.py validate
с системным Python длится ~ 1 с, тогда как та же самая команда, запускаемая внутри виртуальной среды, длится ~ 4 с. Это нормально? Я что-то упускаю? У меня будут проблемы с эффективностью при развертывании этого сайта с помощью Apache + virtualenv?
Примечание: Когда локальный сервер разработки Django работает, я не заметил проблем с эффективностью при использовании сайта. Кажется, это влияет только на команды python, запускаемые из оболочки внутри virtualenv ... Это правда?
Update1:
Вот вам пример раз я на самом деле получить:
[email protected]:~/Documentos/workspace/EurekaStart$ time python manage.py validate
0 errors found
real 0m1.049s
user 0m0.648s
sys 0m0.120s
[email protected]:~/Documentos/workspace/EurekaStart$ source env/bin/activate
(env)[email protected]:~/Documentos/workspace/EurekaStart$ time python manage.py validate
0 errors found
real 0m5.261s
user 0m0.968s
sys 0m1.032s
Update 2:
Я сделал дальнейшее тестирование и обновляется virtualenv до последней версии 1.10.1, и я заметил, что времена раз улучшились, а просто литте (от 0,5 до 1 с). Я также попытался создать env с флагом --system-site-packages
, и время намного лучше, но все же медленнее, чем использование Python по умолчанию для системы. Вот раз:
Использование env
создан без использования system-site-packages
:
(env)[email protected]:~/Documentos/workspace/EurekaStart$ time python manage.py validate
0 errors found
real 0m4.648s
user 0m1.008s
sys 0m0.824s
Использование env2
созданного с помощью system-site-packages
:
(env2)[email protected]:~/Documentos/workspace/EurekaStart$ time python manage.py validate
0 errors found
real 0m1.921s
user 0m0.760s
sys 0m0.312s
Просто к сведению, нормальное исполнение без какого-либо окр длится 1s (как указано в update1).
Я только что создал тот же virtualenv с точно такими же LIBS, установленные внутри из свежей Ubuntu 12.04 (живой компакт-диск) и все работает, как и ожидалось! Он даже работал быстрее на этой новой машине: 0,6 вместо 1,0 на моей машине.
Один интересный момент: если я использую virtualenv, созданный из нового Ubuntu на моей реальной машине, он выполняется так же быстро, как выполнение команды без virtualenv, что и есть на самом деле. Но, если я использую virtualenvs, созданные с этой машины, они работают очень медленно.
Итак, я полагаю, что установленные в системе libs действительно влияют на то, как создается virtualenv.
Теперь вопрос будет ... Есть ли способ очистить мою установку Ubuntu, чтобы иметь возможность создавать эффективные virtualenvs? Есть ли какие-либо известные lib, которые могут вызвать эту проблему? (В системе нет сломанных пакетов, поскольку я уже проверил это).
Это не нормально. Можете ли вы запустить 'time python manage.py SOMECOMMAND' (заменяя SOMECOMMAND командой, которая не будет уничтожать вашу систему) внутри и снаружи venv? восприятие - убийца, и поэтому это смещение конформации, поэтому реальные числа - лучший инструмент для работы. – Tritium21
@ Tritium21 Спасибо за ваш комментарий, я только что включил времена. – Caumons
Какова точная команда, используемая для создания venv? вы указали питон? – Tritium21