BazaarはどのPythonを使用するかをどのように決定しますか?


0

OS X 10.8を使用しています。私のシステムPython /usr/binはバージョン2.7.2です。Homebrew経由でPythonの別のバージョン2.7.3をインストールするという間違い(?)を犯しました。それはからリンクされてい/usr/local/binます。私のPYTHONPATHは後者を指します。具体的にはPYTHONPATH=/usr/local/bin:。そうですか?

いずれにせよ、bzr --version出力

Bazaar (bzr) 2.6b2
Python interpreter: /usr/bin/python2.6 2.6.7
Python standard library: /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6
Platform: Darwin-12.2.1-x86_64-i386-64bit
bzrlib: /Library/Python/2.6/site-packages/bzrlib
Bazaar configuration: /Users/adam/.bazaar
Bazaar log file: /Users/adam/.bzr.log
...

Bazaarはどのようにして2.6.7を検出し、Homebrewバージョンを指すことができますか?それがPYTHONPATHの目的だと思いました。問題は、Homebrewとpip経由でPythonモジュールをインストールしたが、Bazaarがそれらを見つけられないことです。最終的に、私がやろうとしているのは、fastimport経由でBazaar共有リポジトリをGitに変換することですが、それは別の質問です...


Bazaarをどのようにインストールしましたか?

Homebrew経由でもBazaarをインストールしました。
-Metaphile

Homebrew経由でどのようにインストールしましたか?あなただけやった場合はbrew install bazaar、引数なしで、あなたはそれが前または自作のPythonをインストールした後にしましたか?

また、新しく更新されたHomebrewで、brew info bazaar私に言いますbazaar: stable 2.5.1。しかし、2.6b2があります。Homebrew経由でインストールしましたか?

確認したところ、Homebrewのインストールが成功した後のように、/ usr / local / bin / bzrはシンボリックリンクではありません。それは間違いなく私の問題の一部でした。今考えてみると、過去のある時点でCanonicalインストーラーを使用したことを漠然と覚えています。男、なんて一日... OK、だから私はHomebrew経由でBazaarを再インストールし、リンク手順を強制しました...そして、私はあなたとすぐに戻ってきます。
-Metaphile

回答:


2

最初に、10.8には2.5、2.6、2.7が付属しており、すべてがとして利用できることに注意してください/usr/bin/python2.*

次に、Bazaarをどのようにインストールしましたか?

バイナリパッケージをインストールしたと思いますが/usr/bin/python2.6、そのバージョンはすべてのOS X 10.5+バージョンに存在するため、またはそれが彼らがテストしたものであるために、特に依存するためにパッケージ化されました。

(たとえば、、easy_install-2.6または同じものの間接的な同等物を介してインストールすることも可能です。しかし、それはやるべきことのように思えます。)

Homebrew経由でインストールしたパッケージをBazaarで使用したい場合、Homebrew自体またはpipHomebrewのPythonのいずれかを使用してBazaarをインストールすることになるでしょう。


コメントから、Canonicalからインストーラーを実行したことを漠然と覚えていると言いました。その通りのMac OS Xダウンロードとインストールページが明確になり、何をダウンロードしたことは、「Snow Leopardは( - Pythonの2.6 10.6)」のためです。(また、2.6b1があれば、安定版ではなく「テスト」バージョンをダウンロードしました。)

インストーラーはある時点で2.7を使用できるようになりますが、現時点ではこれがBazaarをLionと連携させる最も簡単な方法です。

したがって、これはすべて明確に文書化されています。インストーラーはAppleのシステムPythonを使用し、特にOS X 10.6+には2.6を使用します。


Bazaarは純粋なPythonコードであるため、2.6を見つける方法は簡単です。最初の行/usr/local/bin/bzrは次のようなものです。

#!/usr/bin/python2.6

または:

#!/usr/bin/env python2.6

たとえば、それをハックでき#!/usr/local/bin/python2.7ます。しかし、それは非常に悪い考えです。あるPythonに対して自分自身をインストールして設定するものがありますが、別のPythonに対してそれを実行しようとは思わないでしょう。(純粋なPythonコードであるため、ほとんどの場合機能しますが、神秘的な方法で失敗することもあります。これは、おそらくすぐに失敗するC拡張または埋め込みを使用するコードよりも悪いでしょう。)


1

$PYTHONPATHsys.pathpythonインタープリター自体ではなく、追加のpythonライブラリーの場所を指定するために使用されます(pythonのパスを追加するのと非常に似ています)。お使いのシステムはの最初のバージョンのpythonを選択していると思います$PATH

から取得されたPythonの別のバージョンがインストールされている可能性があります$PATH

実行which pythonして、使用されている正確なpythonバイナリを把握できます。


それ/usr/bin/python2.6が彼の道で最高のものであることは信じられないほどありませんpython。OS Xには/usr/bin/python、最終的に同じインストールを指すバイナリラッパーとして付属しています/usr/bin/python2.7。それに、which pythonおそらく戻ることができませんでした/usr/bin/python2.6

update-alternatives同じパッケージの複数のバージョンを維持するために使用されるものもあります。これは正確にはバイナリラッパーではなく、シンボリックリンクを使用して適切なバージョンのバイナリを選択するだけです。
Tuxdude

1
update-alternativesDebian主義です。OS Xや他のUnix、あるいは多くの非Debianベースの行には存在しません。また、OS Xはシンボリックリンクを使用して適切なPythonを選択しません。繰り返しますが、/usr/bin/python常に/ System / Frameworksから正しい実際のバイナリを選択するバイナリラッパーです(これはAppleの2.7である必要があるため、なぜ彼らがそれを悩ませたのかわかりませんが、それが何をするかです)。あなたの情報は無関係で誤解を招くものです。

1
彼がaptの代わりにHomebrewを使用することについて話しているのに気づかなかった、またはライブラリが「フレームワーク」にある、または/ System / Libraryまたはその残りの部分にパスがあるという奇妙なことを考えていませんか?

1
@Tuxdude OS X 10.8で私が言及している最初の行はどうですか?; D
Metaphile

1

Bazaar用の公式Mac OS Xインストーラーパッケージをビルドします。ただし、Canonicalには雇用されていません。

Canonical WebサイトからダウンロードしたBazaarインストーラーパッケージを使用している場合は、Python 2.6向けに特別にビルドされ、bzrスクリプトは/usr/bin/python2.6そのヘッダーで使用してPython 2.6で呼び出されるようにします。インストーラーをビルドするときにPython 2.6に対してコンパイルされるネイティブPython拡張機能がいくつかあるため、別のメジャーバージョンのPythonで実行すると動作しない場合があります(試したことはありません)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.