модуль "random" не найден при сборке .exe из скрипта IronPython 2.6 - PullRequest
3 голосов
/ 06 июня 2010

Я использую SharpDevelop для создания исполняемого файла из моего скрипта IronPython. Единственная загвоздка в том, что в моем скрипте есть строка импортировать случайный это прекрасно работает, когда я запускаю скрипт через ipy.exe, но когда я пытаюсь собрать и запустить exe из скрипта в SharpDevelop, я всегда получаю сообщение:

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

Почему SharpDevelop "не видит" случайно? Как я могу это увидеть?

1 Ответ

2 голосов
/ 06 июня 2010

Когда вы запускаете сценарий IronPython с ipy.exe, путь к стандартной библиотеке Python обычно определяется одним из следующих параметров:

  1. Переменная среды IRONPYTHONPATH.
  2. Код в lib \ site.py, рядом с ipy.exe, который добавляет расположение стандартной библиотеки Python к пути.

Исполняемый файл IronPython, созданный SharpDevelop, не будет выполнять эти задачи начальной настройки. Поэтому вам нужно будет добавить дополнительный стартовый код перед импортом случайной библиотеки. Вот несколько способов сделать это:

  1. Добавить расположение стандартной библиотеки Python непосредственно в sys.path.

    import sys
    sys.path.append(r'c:\python26\lib')
    
  2. Получить расположение стандартной библиотеки Python из переменной среды IRONPYTHONPATH.

    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 из отдельного файла конфигурации, который поставляется вместе с приложением.

Другой альтернативой является компилирование частей стандартной библиотеки Python, необходимых вашему приложению, в одну или несколько сборок .NET . Таким образом, вам не потребуется конечный пользователь вашего приложения для установки стандартной библиотеки Python.

...