4

SharpDevelopを使用して、IronPythonスクリプトから実行可能ファイルをビルドしています。唯一の問題は、スクリプトにランダムな行インポートがあり、ipy.exeを介してスクリプトを実行すると正常に機能することですが、SharpDevelopのスクリプトからexeをビルドして実行しようとすると、常に次のメッセージが表示されます。

IronPython.Runtime.Exceptions.ImportException: No module named random

SharpDevelopが「ランダムに表示」しないのはなぜですか?どうすればそれを見ることができますか?

4

1 に答える 1

3

ipy.exe を使用して IronPython スクリプトを実行すると、通常、Python 標準ライブラリへのパスは次のいずれかから決定されます。

  1. IRONPYTHONPATH 環境変数。
  2. Python 標準ライブラリの場所をパスに追加する、ipy.exe の隣の lib\site.py 内のコード。

SharpDevelop によって作成された IronPython 実行可能ファイルは、これらの初期セットアップ タスクを実行しません。そのため、ランダム ライブラリをインポートする前に、いくつかの追加のスタートアップ コードを追加する必要があります。これを行うには、いくつかの方法があります。

  1. Python 標準ライブラリの場所を sys.path に直接追加します。

    import sys
    sys.path.append(r'c:\python26\lib')
    
  2. IRONPYTHONPATH 環境変数から Python 標準ライブラリの場所を取得します。

    from System import Environment
    pythonPath = Environment.GetEnvironmentVariable("IRONPYTHONPATH")
    import sys
    sys.path.append(pythonPath)
    
  3. レジストリから Python 標準ライブラリの場所を読み取ります (HKLM\Software\Python\PythonCore\2.6\PythonPath)。

  4. アプリケーションに同梱されている別の構成ファイルから、Python 標準ライブラリの場所を読み取ります。

もう 1 つの方法は、アプリケーションが必要とする Python 標準ライブラリの一部を 1 つ以上の .NET アセンブリにコンパイルすることです。そうすれば、アプリケーションのエンド ユーザーが Python 標準ライブラリをインストールする必要がなくなります。

于 2010-06-06T18:51:21.703 に答える