5

私は、Pythonの新人のグループが、Pythonを使用して特定の種類の科学的作業を行うための新しいシステムをセットアップしています。2つの異なるpython(32ビットと64ビット)があり、システム上のユーザーが使用する共通モジュールのセットをインストールしたいと思います。

  • (a)一部のモジュールは、両方のpythonでそのまま動作します。
  • (b)いくつかのコンパイルコードとPythonに応じて異なるインストール、および
  • (c)特定のpythonではまったく機能しないものもあります。

virtualenv(+ラッパー)はこの種の状況に適していると言われましたが、その方法はわかりません。

  1. virtualenvを使用して、ユーザーごとに各モジュールをインストールしなくても、複数のユーザーアカウントにサンドボックス化されたモジュールを設定できますか?
  2. virtualenvを使用して、ケース(a)の時間を節約できますか?つまり、モジュールをインストールしますが、すべてのpythonにそれを認識させることができますか?

私は、環境を分離して、ケース(c)の問題に応じて、「workonscience32」「workonscience64」と入力するというアイデアが好きです。

アドバイスをいただければ幸いです。

4

1 に答える 1

3

virtualenvを使用すると、--no-site-packagesオプションを省略するだけで、各環境でグローバルにインストールされたシステムパッケージを使用できるようになります。これがデフォルトの動作です。

各環境に独自のパッケージをすべてインストールさせる場合は、を使用する--no-site-packagesと、Pythonを使用して独自のモジュールをインストールできます。これは、パッケージがシステムパッケージと競合しないようにする場合に役立ちます。私は通常、システムのアップグレードが動作中のコードに干渉しないようにするためにこれを行います。

これらは部分的にしか分離されていないため、サンドボックスとして考える場合は注意が必要です。Pythonバイナリとライブラリへのパスは、環境を使用するように変更されますが、実際に行われているのはそれだけです。Virtualenvは、実行中のコードがシステムに破壊的なことをするのを防ぐために何もしません。サンドボックス化する最善の方法は、Linux / Unixのアクセス許可を適切に設定し、独自のユーザーアカウントを付与することです。

バージョン1.7以降の編集

1.7のデフォルトでは、システムパッケージは含まれていません。したがって、システムパッケージを使用する動作が必要な場合は、この--system-site-packagesオプションを使用してください。詳細については、ドキュメントを確認してください。

于 2012-03-26T17:17:39.013 に答える