4

インストールに依存するPythonスクリプトに取り組んでいrosettaます。Rosetta は、Mac OS X 用のダイナミック バイナリ トランスレータであり、多くの PowerPC アプリケーションを特定の Intel ベースの Macintosh コンピュータで変更せずに実行できます。OSをチェックして、存在するかどうかを確認する方法rosettaはありますか?

4

3 に答える 3

3

ロゼッタはもうインストールされていませんが、私の記憶が正しければ、 translate (rosetta コマンド ライン)と入力するだけで、ある種の使用法画面が表示されます。もしそうなら、このようなものがうまくいくはずです。

if os.system("/usr/libexec/oah/translate > /dev/null 2>&1"):
  print "Not installed"
else:
  print "Installed"
于 2012-07-09T18:21:38.157 に答える
0

PPC 依存関係のあるものが実行される可能性が高いかどうかを本当に確認しようとしている場合は、実行中の CPU タイプが PPC であるか、実行中の OS X バージョン >= 10.4 および < 10.7 であることを大まかにチェックできます。これらは OS X バージョンであるためです。ここでは、Rosetta がサポートされており、少なくとも 10.6 では、OS X は、Rosetta がまだインストールされていない場合、必要に応じてユーザーにインストールを求めるプロンプトを自動的に表示します。Darwin カーネルのバージョンは、OS X のバージョン番号とは異なることに注意してください。つまり、10.4 -> Darwin 8、10.5 -> 9 などです。

>>> import os
>>> os.uname()
('Darwin', 'kitt.local', '11.4.0', 'Darwin Kernel Version 11.4.0: Mon Apr  9 19:32:15 PDT 2012; root:xnu-1699.26.8~1/RELEASE_X86_64', 'x86_64')
>>> un = os.uname()
>>> darwin_major_version = int(os.uname()[2].split('.')[0])
>>> cputype = un[4]
>>> can_run_ppc = cputype.startswith('ppc') or (darwin_major_version > 7 and darwin_major_version < 11)
>>> can_run_ppc
False
于 2012-07-09T19:06:08.743 に答える
0

これを取得する公式の方法はありません。

Rosetta は、/usr/libexec/oah/translate というプログラムを介して動作します。公式には、これは変更される可能性のある実装の詳細であるため、依存するべきではありません。ただし、Rosetta が完全に削除された 10.7 まで変更されなかったことがわかっているため、警告があっても安全です。マリア・ズヴェリーナの答えはそのために機能し(パスを追加した場合)、おそらく最も簡単です。または、おそらく、そのようなファイルを実行する代わりに、その存在を確認してください。

あるいは、Rosetta には Intel 10.4-10.6 が付属していました (OS の以前のバージョンは PPC のみで、Intel はありませんでした)。繰り返しますが、正式には、OS のバージョンに依存することは決して想定されておらず、代わりに適切な API を使用して機能を確認してください。ただ、今回の場合は適当なAPIがないようなので、これでいいのかもしれません。ただし、10.6 では Rosetta をインストールする必要がないため、チェックボックスをオフにしたユーザーは検出されません。これを行う場合:

import platform
release, versioninfo, machine = platform.mac_ver()
versionbits = [int(bit) for bit in release.split('.')]
rosetta = (versionbits < (10,7) and not machine.startswith('ppc'))

(一部のバージョンでは、platform.mac_ver() が行うべきではないハックなことを行うため、これも「悪い」ことに注意してください。OS X のバージョン ビットを取得する正しい方法は、Gestalt を呼び出すことです。しかし、mac_ver()は標準ライブラリの一部であるため、少なくともハッキーな機能を可能な限り実行し、広くテストされていることを信頼できます。)

あなたが実際に Rosetta を望んでいるわけではなく、ネイティブまたは Rosetta 経由で PPC を実行できるかどうかにかかわらず、それはさらに簡単です。Rosetta に付属していない 10.7 より前のバージョンはすべて PPC です。すべての 10.7+ バージョンは PPC 期間を実行できません。したがって、「リリース < '10.7'」だけで済みます。(繰り返しますが、10.6 ではオプションで Rosetta のインストールをスキップできることに注意してください。)

于 2012-07-09T19:17:47.227 に答える