Python virtualenv非常慢

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 为我解决了这个问题.

希望它可以帮助某人.


Cau*_*ons 4

我认为 virtualenv 的效率问题可能是由分配的 HDD 分区类型引起的。就我而言,从 NTFS 分区运行 virtualenv 会导致速度非常慢。但是,从 Ext4 分区运行具有完全相同的库的 virtualenv 可以按预期工作。

  • 你觉得你过得不好吗?真实 7m10.014s 用户 0m0.904s 系统 0m13.809s (4认同)
  • @DylanMadisetti 令人印象深刻的是你发现这需要 7 分钟;仅仅 15 秒后我就假设它永远不会被导入,并终止它...... (2认同)