3

私は3つの異なるPython2.7を持っています:

/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7

私はさまざまなソースからのパッケージをいくつか使用しています。私は現在、port(MacPorts)、easy_installpipeasy_installによってインストールされる)、およびMercurialからパッケージをインストールしています。イメージからインストールしたり、ソースからビルドしたりする必要があるものもあります。私はそれらをもっとコントロールできます。

問題は、easy_installとpipが1つの場所にインストールされているように見え(/Library/Frameworks/...)、MacPortsが別の場所にインストールされている(/opt/local/Library/Frameworks/...)ことです。

今の私の最高の行動は何ですか?/Library/Frameworks/.../python2.7easy_installを削除して移動し、MacPortsの1つにpipし/opt/local/...ますか?2つのディレクトリをリンクしますか?MacPortsのインストールを/Library/Frameworks/...?に移動します。

これらのPythonを統合するにはどうすればよいですか?両方のサイトパッケージの場所をパスに入れてみましたが、特定のパッケージのみが1つのPythonでのみ使用可能であり、他のパッケージは使用できません。他のパッケージは一度に使用可能である必要があります。

4

4 に答える 4

4

自分で作成しているものを自分で管理しているようです。これが私がmacportsをpipと統合する方法です:

私はすべてのものにMacportsを使用するのが好きなので、それを確認してpipeasy_installmacportsのpythonのインストール(の1つ/opt/local/...)に組み込みます。

以下を使用して、pipとeasy_installがインストールする場所を確認できます。

readlink `which pip`

(それらはバックティックです)

pipをmacportsディレクトリにインストールする場合は、macportsを使用してpipをインストールします。

sudo port install py-pip

次に、それがwhich pip次のようなものを指していることを確認してください。

askewchan@rock:~$ which pip
/opt/local/bin/pip
askewchan@rock:~$ readlink `which pip`
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/pip-2.7

以下のコメント(@Jonathanと@Nedに感謝)から、同じことを行うことができますeasy_installが、そのポートは次のように呼ばれpy-distributeます:

sudo port install py-distribute

しかし、私が知る限り、編集できるものはすべてより良く編集できるので、使用する必要ありませeasy_installん。easy_installpip

ポートの説明に注意してください。

askewchan@rock:Tracking {master *}$ port search *easy*install*
py-pip @1.2.1 (python, www)
    An easy_install replacement

askewchan@rock:Tracking {master *}$ port search py*distribute
py-distribute @0.6.35 (python, devel)
    Replacement for setuptools
于 2013-03-12T18:21:24.743 に答える
1

開発作業にはPythonを1つだけ決定することをお勧めします(個人的には、Python.orgのディストリビューションを使用しています)

  • / Library / Frameworksを取り除くことはできません-これはデフォルトのOSXのものであり、物事を壊す可能性があります
  • 残りの2つのPythonのうち、1つはMacportsで、もう1つはPython.orgであると想定しています。どちらを開発環境にしたいのかを選択し、それを維持する必要があります。

あるPythonを使用したり、別のPythonからモジュールをインストールしたりしないことを強くお勧めします。その理由は、コンパイルオプションに違いがある可能性があるためです。特定のパッケージをOSXで適切にコンパイルするのは、現状のままでは十分に難しい場合があります。さまざまなバイナリ(さまざまなアーキテクチャをサポートしている可能性があります)に対してコンパイルを開始すると、頭痛の種が増えるだけです。pipeasy_install

私は個人的に次のパスを選択しました。

  1. 私はすべての開発にPython.orgパッケージを使用しています。
  2. ターミナルログイン時に、シェルスクリプトを実行して、Pythonの選択に優先順位を付けます
  3. すべてのプロジェクトには独自のvirtualenvがあり、システムパッケージを無効にします
  4. プロジェクトに取り組み始めるとき、私は環境設定スクリプトを持っている傾向があります。入力するだけgo_myproject.sourceです; それはcd私を正しいディレクトリにsource /path/to/virtualenv/bin/activate移動させ、そのプロジェクトのセットアップを取得するためにを実行します。

セットアップには少しオーバーヘッドがありますが、それ以来、私は完全な天国にいます。プロジェクトを管理し、依存関係やアップグレードについて心配する必要がないので、他の何かを殺すことができます...至福です。

于 2013-03-12T19:36:33.237 に答える
1

一般的な解決策ではありませんが、virtualenvを使用してMercurialやその他のPythonベースのアプリケーションをインストールします。特に、pipとeasy_installはそれぞれの仮想環境にのみインストールされ、システムフォルダーを乱雑にすることはありません。欠点は、もちろん、いくつかのパッケージの複製があることです。利点は、既知のバージョンのPythonを備えたクリーンで自己完結型の環境があることです(Mercurialやその他のミッションクリティカルなアプリケーションなどでは、これが私にとってより重要です)。

もう1つの欠点は、個々のアプリケーションを個人のbinディレクトリにリンクするか、仮想環境のbinディレクトリをパスに追加する必要があることです。(個人的には、シンボリックリンクを実行するいくつかの簡単なスクリプトを使用してこれを管理します。)

于 2013-03-12T20:41:30.593 に答える
-2

すべてのPythonインストールを1つの場所に移動し、シンボリックリンクを作成することをお勧めします。その後、モジュールのインポートと「可視性」に関する問題を回避するためにPython環境を構成します。コマンドを使用してみてください:

# easy_install
env PYTHONPATH=/custom/path easy_install –install-dir /custom/path

#pip
pip install --install-option="--prefix=$PREFIX_PATH" package_name
于 2013-03-12T18:04:03.900 に答える