Cau*_*ons 3 python django virtualenv
我正在使用Python 2.7.3在Ubuntu 12.04 x64上工作,我刚刚将Django 1.5.4站点移植到virtualenv 1.7.1.2.
但是,我注意到,从活动的virtualenv运行Python命令要比使用系统的Python安装时慢得多.例如,python manage.py validate使用系统Python的runnig 持续约1秒,而在virtualenv环境中运行的同一命令持续约4秒.这是正常的吗?我错过了什么吗?使用Apache + virtualenv部署此站点时,是否会出现效率问题?
注意:当本地Django开发服务器运行时,我没有注意到使用该站点时的效率问题.它似乎只影响从virtualenv中的shell运行的python命令......这是真的吗?
UPDATE1:
在这里你有一个我实际得到的时间的例子:
enric@developer:~/Documentos/workspace/EurekaStart$ time python manage.py validate
0 errors found
real 0m1.049s
user 0m0.648s
sys 0m0.120s
enric@developer:~/Documentos/workspace/EurekaStart$ source env/bin/activate
(env)enric@developer:~/Documentos/workspace/EurekaStart$ time python manage.py validate
0 errors found
real 0m5.261s
user 0m0.968s
sys 0m1.032s
Run Code Online (Sandbox Code Playgroud)
更新2:
我已经做了进一步的测试,并将virtualenv更新到最新的版本1.10.1,我注意到时间已经改善了,但只是一点点(在0.5s和1s之间).我也尝试使用--system-site-packages标志创建env,时间要好得多,但仍然比使用系统的默认Python慢.这是时代:
使用env创建而不使用system-site-packages:
(env)enric@developer:~/Documentos/workspace/EurekaStart$ time python manage.py validate
0 errors found
real 0m4.648s
user 0m1.008s
sys 0m0.824s
Run Code Online (Sandbox Code Playgroud)
使用env2创建使用system-site-packages:
(env2)enric@developer:~/Documentos/workspace/EurekaStart$ time python manage.py validate
0 errors found
real 0m1.921s
user 0m0.760s
sys 0m0.312s
Run Code Online (Sandbox Code Playgroud)
需要注意的是,没有任何环境的正常执行持续1秒(如update1中所述).
我刚刚创建了与新安装的Ubuntu 12.04(live CD)中安装的完全相同的libs相同的virtualenv,一切都按预期工作!它甚至在这台新机器上跑得更快:在我的机器上0.6s而不是1.0.
一个有趣的注意事项:如果我在我的真实机器中使用从新鲜的Ubuntu创建的virtualenv,它运行的速度与执行没有virtualenv的命令一样快,这实际上是预期的.但是,如果我使用从这台机器创建的virtualenvs,那么它们运行速度非常慢.
所以,我想系统中安装的库确实会影响virtualenv的创建方式.
现在,问题是...... 有没有办法清除我的Ubuntu安装,以便能够创建高效的virtualenvs?是否有任何已知的库可能会导致此问题?(系统中没有破损的包,因为我已经检查了这个).
小智 11
这主要适用于Vagrant驱动的virtualenvs,但我遇到了同样的问题:极慢的manage.py/django-admin.py(django-admin.py版本为~10-15s.).
我发现罪魁祸首是vagrant/virtualbox,特别是在共享文件夹上生成virtualenv.
在非共享文件夹(如〜/ .envs)上重新生成virtualenv 为我解决了这个问题.
希望它可以帮助某人.
我认为 virtualenv 的效率问题可能是由分配的 HDD 分区类型引起的。就我而言,从 NTFS 分区运行 virtualenv 会导致速度非常慢。但是,从 Ext4 分区运行具有完全相同的库的 virtualenv 可以按预期工作。
| 归档时间: |
|
| 查看次数: |
5078 次 |
| 最近记录: |