我正在使用 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 运行持续约 1 秒,而在 virtualenv 环境中运行相同的命令持续约 4 秒。这是正常的吗?我错过了什么吗?使用 Apache + virtualenv 部署此站点时会出现效率问题吗?
注意:当本地 Django 开发服务器运行时,我在使用该站点时没有注意到效率问题。它似乎只影响从 virtualenv 内的 shell 运行的 python 命令......这是真的吗?
更新1:
在这里,您有一个我实际得到的时间示例:
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
更新 2:
我已经做了进一步的测试并将 virtualenv 更新到最新版本 1.10.1,我注意到时间有所改善,但只是一点点(0.5s 到 1s 之间)。我还尝试使用--system-site-packages
标志创建环境,时间要好得多,但仍然比使用系统的默认 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
使用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
请注意,没有任何 env 的正常执行持续 1 秒(如 update1 中所述)。
我刚刚从新的 Ubuntu 12.04(live CD)创建了相同的 virtualenv,其中安装了完全相同的库,一切都按预期工作!它甚至在这台新机器上运行得更快:0.6s 而不是我机器上的 1.0。
需要注意的一点是:如果我在我的真机上使用从新的 Ubuntu 创建的 virtualenv,它的运行速度与在没有 virtualenv 的情况下执行命令一样快,这是实际预期的。但是,如果我使用从这台机器创建的 virtualenvs,那么它们会运行得很慢。
所以,我猜系统中安装的库确实会影响 virtualenv 的创建方式。
现在,问题是......有什么方法可以清除我的 Ubuntu 安装以创建高效的 virtualenvs吗?是否有任何已知的库可能导致此问题?(系统中没有损坏的包,因为我已经检查过了)。