MacにPythonモジュールをインストールする最も互換性のある方法は何ですか?


125

私はpythonを学び始め、それを愛しています。私は主にLinuxと同様にMacで作業しています。Linux(Ubuntu 9.04がほとんど)では、apt-getを使用してpythonモジュールをインストールすると、正常に動作することがわかります。問題なくインポートできます。

Macでは、Macportsを使用してすべてのUnixのものをインストールすることに慣れています。ただし、一緒にインストールするほとんどのpythonモジュールがpythonで表示されないことがわかりました。PATHの設定を試し、python_selectを使用するのに少し時間を費やしました。実際には何も機能しておらず、現時点では本当に理解できていません。代わりに、ただのぞいているだけです。

MacportsはPythonモジュールの管理に広く愛されているわけではないという印象を受けます。より「受け入れられた」(それが正しい場合)アプローチを使用して、新たに始めたいと思います。

それで、Mac python開発者がモジュールを管理するためにどのような方法を使用しているのでしょうか。

ボーナス質問:

Appleのpythonまたは他のバージョンを使用していますか?すべてをソースからコンパイルしますか、それともうまく機能するパッケージマネージャー(Fink?)がありますか。


Mac OS X用のPyQtアプリケーションのパッケージ化に関する素晴らしい記事が、しばらく前にArs Technicaにありました: arstechnica.com/open-source/guides/2009/03/…–
Todd Gamblin

7
MacPortsは、Mac上のPythonに最適です。注:MacPorts Pythonインストールにそれらをインストールするには、MacPortsを介してPythonパッケージをインストールする必要があります。MacPortsを使用せずにパッケージをインストールすることもできます。ただし、パッケージをインストールする前に、python_selectを使用して、そのバージョンのpythonをデフォルトにする必要があります。パッケージをインストールしてからpython_selectを使用しても、インストール時のデフォルトのPythonのバージョンにインストールされるため、違いはありません。
Michael Aaron Safyan、2009

回答:


144

Pythonパッケージを管理する最も一般的な方法(システムパッケージマネージャーを使用していない場合)は、setuptoolsとeasy_installを使用することです。おそらくすでにシステムにインストールされています。次のように使用します。

easy_install django

easy_installは、Python 開発者にとって素晴らしいリソースであるPythonパッケージインデックスを使用します。利用可能なパッケージを確認するために周りを見てください。

より良いオプションは、ピップ、それはしようとすると、勢いを増している、多くの問題解決 easy_installを関連付けられています。Pipは、easy_installと同じパッケージリポジトリを使用します。実際に、easy_installを使用する必要があるのは、次のコマンドの場合のみです。

easy_install pip

その後、次を使用します:

pip install django

ある時点で、おそらくvirtualenvについて少し学びたいと思うでしょう。。パッケージ要件が競合するプロジェクトで多数のPython開発を行う場合、virtualenvは天の恵みです。それはあなたが様々なパッケージの完全に異なるバージョンを持っていることを可能にし、あなたのニーズに応じてそれらを簡単に切り替えることができます。

使用するpythonについては、Appleのpythonを使用することで頭痛の種を最小限に抑えることができますが、新しいバージョンが必要な場合(Leopardは2.5.1だと思います)、macports python 2.6を使用します。


5
私は最近自分のマシンを再構築し、HomebrewとPIPのみを使用するように切り替えました。突然、すべてのビルドの問題はなくなりました。
GloryFish 2010

42

あなたの質問はすでに3年前のものであり、他の回答ではカバーされていない詳細がいくつかあります。

私が知っているほとんどの人はHomeBrewまたはMacPortsを使用しています。デフォルトのMac OS X環境と私の開発設定を明確に示しているため、MacPortsを好みます。/ optフォルダーを移動して、通常のユーザーPython環境でパッケージをテストするだけです

MacPortsはMac内でのみ移植可能ですが、easy_installまたはpipを使用して、任意のプラットフォーム(Win / Mac / Linux / Bsd ...)で環境をセットアップする方法を学習します。さらに、それは常により最新でより多くのパッケージになります

私は個人的にMacPortsに私のPythonモジュールを処理させ、すべてを最新の状態に保ちます。他の高レベルのパッケージマネージャー(例:apt-get)と同様に、多くのバイナリ依存関係があるモジュールを大幅に持ち上げる場合に適しています。easy_installまたはpipを使用してQtバインディング(PySide)を構築する方法はありません。Qtは巨大で、コンパイルに多くの時間がかかります。Python以外のプログラムで使用されるライブラリを必要とするPythonパッケージが必要な場合は、easy_installまたはpipを避けてください。

ある時点で、MacPorts内にいくつかのパッケージが欠落していることがわかります。MacPortsがあなたにCheeseShop全体を与えるとは私は信じていません。たとえば、最近Elixirモジュールが必要になりましたが、MacPortsはpy25-elixirとpy26-elixirのみを提供しており、py27バージョンは提供していません。このような場合には、次のことが起こります。

pip-2.7 install --user elixir

(必ずpip-(version)と入力してください)

これにより、ホームディレクトリに追加のPythonライブラリが構築されます。はい、Pythonは複数のライブラリの場所で動作します。MacPortsによって制御される場所と、MacPorts内にないすべてのものに対してユーザーローカルな場所です。

今度は、easy_installよりもpipを優先することに注意してください。setuptoolsとeasy_installを避けるべき正当な理由があります。ここに良い説明があり、私はそれらから遠ざけるようにしています。pipの非常に便利な機能の1つは、MacPorts、easy_install、およびpip自体を使用してインストールしたすべてのモジュールのリストを(バージョンに応じて)提供することです。

pip-2.7フリーズ

既にeasy_installの使用を開始している場合でも、心配しないでください。pipは、easy_installによってすでに行われたすべてを認識し、それとともにインストールされたパッケージをアップグレードすることさえできます。

開発者は、virtualenv監視して、さまざまな設定やモジュールバージョンの組み合わせを制御してください。他の回答はすでにそれを言及しています、これまで述べられていないのはToxですますパッケージがさまざまなPythonバージョンで正しくインストールされることをテストするためのツールでモジュールです。

通常、バージョンの競合はありませんが、virtualenvを使用してクリーンな環境をセットアップし、パッケージの依存関係を明確に表示したいと思っています。そうすれば、setup.pyの依存関係を決して忘れません

MacPortsを使用する場合は、同じパッケージの複数のバージョンが、追加のpython_selectパッケージを使用した古いDebianスタイルのように選択されなくなったことに注意してください(互換性のためにまだ残っています)。これで、使用するPythonバージョンを選択するためのselectコマンドがあります(Appleがインストールしたバージョンを選択することもできます)。

$  port select python
Available versions for python:
    none
    python25-apple
    python26-apple
    python27 (active)
    python27-apple
    python32

$ port select python python32

その上にトックスを追加すると、プログラムは本当に移植可能になるはずです


30

Python OS X開発環境をご覧ください。最善の方法は、MacPortsを使用することです。MacPortsをダウンロードしてインストールし、ターミナルに次のコマンドを入力してMacPorts経由でPythonをインストールします。

sudoポートインストールpython26 python_select
sudo port select --set python python26

または

sudoポートインストールpython30 python_select
sudo port select --set python python30

最初のコマンドセットを使用してPython 2.6をインストールし、2番目のコマンドセットを使用してPython 3.0をインストールします。次に使用します:

sudo port install py26-packagename

または

sudo port install py30-packagename

上記のコマンドで、packagenameをパッケージの名前に置き換えます。次に例を示します。

sudoポートインストールpy26-setuptools

これらのコマンドは、指定されたPythonバージョンのパッケージ(およびその依存関係)を自動的にインストールします。

Pythonで利用可能なパッケージの完全なリストを表示するには、次のように入力します。

ポートリスト| grep py26-

または

ポートリスト| grep py30-

使用するコマンドは、インストールすることを選択したPythonのバージョンによって異なります。


1
参考sudo python_select python30までに、MacPortsの最近のバージョンではに置き換えられましたsudo port select --set python python30
ベンジャミンホジソン

7

MacPortsを使用してPythonとMacPortsによって追跡されるサードパーティのモジュール/opt/localをにインストールし、手動でインストールしたモジュール(MacPortsリポジトリにないもの)をにインストールしました/usr/localが、これによって問題が発生することはありません。特定のMacPortsスクリプトと環境変数の使用に関して混乱しているかもしれません。

MacPorts python_selectは、Pythonの「現在の」バージョンを選択するために使用されますが、モジュールとは関係ありません。これにより、たとえば、MacPortsを使用してPython 2.5とPython 2.6の両方をインストールし、インストールを切り替えることができます。

$PATH環境変数がないではない Pythonモジュールがロードされているものに影響を与えます。$PYTHONPATHあなたが探しているものです。$PYTHONPATHロードするPythonモジュールを含むディレクトリを指す必要があります。私の場合、$PYTHONPATH変数にはが含まれています/usr/local/lib/python26/site-packages。MacPortsのPythonを使用している場合は、他の適切なディレクトリが設定されるため、へのパスを追加するだけで済みます$PYTHONPATH。しかし、繰り返しになり$PATHますが、Pythonがインストールしたモジュールを検索するときにはまったく使用されません。

$PATH 実行可能ファイルの検索に使用されるため、MacPortsのPythonをインストールする場合/opt/local/binは、がにあることを確認してください$PATH


6

MacPorts Pythonインストールの使用には何の問題もありません。MacPortsからPythonモジュールをインストールしても、それらが表示されない場合は、インストール先のMacPorts Pythonを起動していない可能性があります。ターミナルシェルでは、絶対パスを使用して、インストールされているさまざまなPythonを呼び出すことができます。例えば:

$ /usr/bin/python2.5         # Apple-supplied 2.5 (Leopard)
$ /opt/local/bin/python2.5   # MacPorts 2.5
$ /opt/local/bin/python2.6   # MacPorts 2.6
$ /usr/local/bin/python2.6   # python.org (MacPython) 2.6
$ /usr/local/bin/python3.1   # python.org (MacPython) 3.1

デフォルトで正しいpythonを取得するには、シェル$ PATHが適切に設定されていることを確認して、正しい実行可能ファイルが最初に見つかるようにする必要があります。別の解決策は、さまざまなpythonにシェルエイリアスを定義することです。

他の人が示唆しているように、python.org(MacPython)のインストールも問題ありません。 easy_install 助けになりますが、繰り返しになりますが、各Pythonインスタンスには独自のeasy_installコマンドがある可能性があるため、適切なを呼び出していることを確認してくださいeasy_install


2
彼がMacPortsを使用している場合、そのバージョンのPythonをデフォルトにする正しい方法は、PATHを台無しにするのではなく、「python_select」をインストールして、必要なシンボリックリンクを自動的に切り替えて、そのバージョンのPythonをデフォルトにすることです。
Michael Aaron Safyan、2009

3
python_selectは/ opt / local / bin内のpythonシンボリックリンクのみを管理し、/ opt / local / binが$ PATH内の/ usr / local / binまたは/ usr / binの前にあることは保証されません(MacPortsの初期インストールでは、そうする)。ポイントは、複数のバージョンが利用可能であるため、「python」または「python2.5」だけを使用することは、一般的にはちょっとしたクラックシュートです。$を知らない限り、どのPythonになるかわかりません。 PATHの落とし穴や絶対パスを使用します。
ネッドデイリー2009

6

MacPortsからPythonを使用する場合は、/ opt / local / bin / easy_install-2.6(py26の場合)に独自のeasy_installがあります。python_selectを使用してデフォルトのpythonコマンドを変更した場合でも、単にeasy_installを直接呼び出すのとは異なります。


1
ピップについても同じです。私のMacPortsセットアップで、pip-2.6(/ opt / local / bin /にあります)を実行して、MacPorts pythonでうまく機能するpythonモジュールをインストールします。あなたはsudo port install py2.6-pipピップを取得することができます。
zlovelady

4

easy_installを調べましたか?それはあなたのmacportsまたはそのようなものを同期しませんが、それは自動的に最新のパッケージとすべての必要な依存関係をダウンロードします、すなわち

easy_install nose

鼻の単体テストパッケージの場合、または

easy_install trac

以下のためのtracバグトラッカー。

EasyInstallページにももう少し情報があります。


1
easy_installは問題ありません。pythonの複数のバージョンがインストールされている場合と同様に、easy_installの複数のバージョンを簡単にインストールでき、それぞれに異なるpythonのインストール/バージョンが関連付けられていることに注意してください。呼び出しているのがどれかを理解していることを確認する必要があるだけです((1)が役に立ちます)。
ネッドデイリー2009


2

MacPortsでモジュールをインストールすると、それはAppleのバージョンのPythonに入りません。代わりに、これらのモジュールは選択されたPythonのMacPortsバージョンにインストールされます。

python_selectと呼ばれるMacポートを使用して、デフォルトで使用されるPythonのバージョンを変更できます。手順はこちら

また、easy_installもあります。pythonを使用してpythonモジュールをインストールします。


python_selectは非推奨になりました。新しい回答をご覧ください。
askewchan 2013




-1

finkパッケージの1つを直接インストールします(2013年11月現在のDjango 1.6)

fink install django-py27
fink install django-py33

または、自分でvirtualenvを作成します。

fink install virtualenv-py27
virtualenv django-env
source django-env/bin/activate
pip install django
deactivate # when you are done

または、fink djangoに加えて、virtualenvにインストールされている他のpipパッケージを使用します

fink install django-py27
fink install virtualenv-py27
virtualenv django-env --system-site-packages
source django-env/bin/activate
# django already installed
pip install django-analytical # or anything else you might want
deactivate # back to your normally scheduled programming
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.