5

Python 2.7.3 を使用して Ubuntu 12.04 x64 に取り組んでおり、Django 1.5.4 サイトを virtualenv 1.7.1.2 に移植しました。

ただし、Python コマンドは、システムの Python インストールを使用する場合よりも、アクティブな virtualenv から実行する場合の方がはるかに遅いことに気付きました。たとえばpython manage.py validate、システムの Python で実行すると ~1 秒続きますが、virtualenv 環境内で同じコマンドを実行すると ~4 秒続きます。これは正常ですか?何か不足していますか?このサイトを Apache + virtualenv でデプロイすると、効率の問題が発生しますか?

注: ローカルの Django 開発サーバーが実行されている場合、サイトの使用中に効率の問題に気づいていません。virtualenv内のシェルから実行される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.5 秒から 1 秒の間) 改善されていることに気付きました。また、フラグを使用してenvを作成しようとしましたが--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(ライブCD)からまったく同じライブラリがインストールされた同じvirtualenvを作成したところ、すべてが期待どおりに機能します!この新しいマシンではさらに高速に実行されました。私のマシンでは 1.0 ではなく 0.6 秒でした。

1 つの興味深い点: 実際のマシンで新鮮な Ubuntu から作成された virtualenv を使用すると、virtualenv なしでコマンドを実行するのと同じくらい速く実行されます。これは実際に予想されることです。しかし、このマシンから作成された virtualenv を使用すると、実行速度が非常に遅くなります。

したがって、システムにインストールされているライブラリは、仮想環境の作成方法に実際に影響を与えると思います。

さて、質問は...効率的なvirtualenvを作成できるようにUbuntuインストールをパージする方法はありますか? この問題を引き起こす可能性のある既知のライブラリはありますか? (私はすでにこれをチェックしたので、システムに壊れたパッケージはありません)。

4

2 に答える 2

13

これは主に Vagrant を利用した virtualenvs に当てはまりますが、私は同じ問題に遭遇しまし

犯人は vagrant /virtualboxであり、具体的には共有フォルダーで virtualenv を生成していることがわかりました

非共有フォルダー ( ~/.envs など) で virtualenv を再生成すると、問題が解決しました。

それが誰かを助けることを願っています。

于 2015-01-08T15:55:40.950 に答える