2016-08-24 12 views
0

私はDebian JessieとMac El Capitanの2つの別々のシステムでdjangoプロジェクトに取り組んでいます。このプロジェクトはgithubでホストされており、両方のシステムがプッシュまたはプッシュします。Virtualenvは異なるOSに異なるバージョンを提供します

しかし、私はpython --versionを実行したときに、私のDebian上で、それは私にPython 3.4.2を与えるが、私のMac上で、それは同じ仮想環境にいるにもかかわらず、私Python 2.7.10を与えることに気づきました。さらに、私がDebianにdjango-admin --versionを実行すると、1.10、私のMacでは1.8.3となります。

これは私がgithubからプロジェクトを新しくクローンしてコマンドを実行しても起こります。

なぜ仮想環境は同じバージョンのpythonとdjangoを保持しないのですか?

+1

VirtualenvにPython実行ファイルを明示的に伝える必要があります。指定しない場合は、デフォルト/システムを使用します。 –

+0

@OliverCharlesworth仮想環境でさえ?つまり、 'bin/python command'のように指定する必要がありますか?私は、仮想環境のポイントは私のシステムのpythonを分離することだと思った。 –

+0

いいえ、仮想環境のポイントは、インストールするパッケージを分離することです。 –

答えて

0

仮想環境をマシン間で簡単に転送できないことを理解しました。それは

pip freeze 

コマンドを使用してrequirements.txtというファイルにその出力を保存するのが一般的です。その後、他の誰かが、あなたが道を続けなければならない。-pまたは--pythonスイッチ、で使用したいのPythonインタプリタと言うことができ、新たな仮想環境を作成する場合

pip install -r requirements.txt 

を実行することにより、自分のマシン上であなたのenvirnmentを再構築することができます正しい実行可能ファイルに変換します。

私は、システムメンテナンスルーチンがしばしばその完全性に依存しているので、何らかの方法でシステムPythonを変更することをお勧めします。 /usr/local/binのようなPython 2と3の新しいコピーをインストールするのは比較的簡単です(Macユーザーはこれにはしばしばbrewを使用します)。そして、異なるPythonインタプリタに依存する仮想環境を持っています。

0

@Oliverと@ Danielのコメントのおかげで、なぜそれがうまくいかなかったのかの答えに私を導きます。

私はDebian上でpython 3で仮想環境を開始しました。virtualenvは仮想環境を作りましたが、それは特にDebian用でした。

私はMac用に使ったとき、仮想環境で実行可能なPython実行ファイル(Debianとのみ互換性があるため)を実行できなかったため、MacのシステムPython(Python 2.7.10)を使用しました。

要約すると、virtualenvは、システム上で実行可能なpythonを使用するため、python実行可能ファイルを別のシステムで実行すると機能しません。

関連する問題