1

PyPyv1.9をWindows8、64ビットにインストールしています。pypy.exeバイナリを含むフォルダーをパス(C:\ Users \ me \ Documents \ pypy-1.9)に追加しましたが、PyPyを実行しようとすると、次のエラーメッセージが表示されます。

デバッグ:警告:コンパイル済みのsys.pathを使用して、ライブラリパスが見つかりません

デバッグ:警告:「sys.prefix」は設定されません。

デバッグ:警告:pypyバイナリがファイルツリー内に保持されていることを確認してください。

デバッグ:警告:他の場所からシンボリックリンクを作成しても問題ありません。

「サイトのインポート」に失敗しました

Python 2.7.2(341e1e3821ff、2012年6月7日、15:43:00)

[MSCv.150032ビットを使用したPyPy1.9.0]on win32

詳細については、「help」、「copyright」、「credits」、または「license」と入力してください。

デバッグ:OperationError:デバッグ:

operror-type:ImportError

デバッグ:operror-value:_pypy_interactという名前のモジュールはありません

これは、PyPyが存在するディレクトリの外で実行しようとした場合にのみ発生します。exeを直接実行すると、コマンドプロンプトが開き、正しく実行されます。

4

1 に答える 1

1

なぜこれが起こっているのかはまだわかりませんが、ある種の解決策を見つけました。通常は pypy.exe が格納されているフォルダーに pypy 実行可能ファイル (pypy.bat) と同じ名前の非常に単純なバッチ ファイルを作成するのに少し時間がかかり、pypy.exe の名前を pypy_binary.exe に変更しました (または、それ以外の場合は、.実際には関係ありません)。これに加えて、実行中のファイルがある場所にディレクトリを設定するための少しハックな回避策を入れました。スクリプトに引数として渡します。次に、引数を確認し、提供されたディレクトリ (os.chdir(sys.argv[1])) に移動します。

この問題が発生した可能性があるその他のユーザー向けのバッチ ファイルは次のとおりです。

@echo off
set LAST=%CD%
pushd %~dp0
echo %LAST% > last.tmp
if "%1" == "" goto noargs

start /B /WAIT pypy_binary.exe "%LAST%\%1" "%LAST%"
goto finish

:noargs
start /B /WAIT pypy_binary.exe

:finish
popd

余談ですが、pypy を使用して pyglet を使用するプログラムを実行している場合は、'pyglet/libs/win32/ __ init __を編集する必要があります。.py' 行 192 ~ 196 (約)。pypy では、タプルには__itemsize___属性なので、try/except を入れるか、if/else なしで '_user32.SetClassLongPtrW = _user32.SetClassLongW' を直接設定する必要があります。

于 2012-08-22T22:04:04.610 に答える