развертывание скрипта IronPython или статическая сборка приложения

Я создал скрипт IronPython, который импортирует из библиотек Python, таких как os, sys и т. д., а также из библиотек .NET.

Он отлично работает из моего решения Visual Studio IronPython, но мне нужно развернуть его, чтобы другие люди, у которых не установлены IronPython или Python, могли его запустить.

Как бы я это сделал?


person Gezim    schedule 31.07.2012    source источник


Ответы (1)


Требования:

  • ipy.exe in C:\Program Files (x86)\IronPython 2.7.1\
  • pyc.py in C:\Program Files (x86)\IronPython 2.7.1\Tools\Scripts\
  • MyProgram.py будет вашей программой.

    1. Inside your project folder (where MyProgram.py is), create a folder called "deploy."
    2. Запустите cd deploy в командной строке.
    3. Беги "C:\Program Files (x86)\IronPython 2.7.1\ipy.exe" "C:\Program Files (x86)\IronPython 2.7.1\Tools\Scripts\pyc.py" /main:..\MyProgram.py /target:exe

Это создаст dll и exe для MyProgram в папке deploy.

Если вы попытаетесь запустить MyProgram.exe и импортируете такие библиотеки, как os, вы можете получить ошибку No module named ....

Поскольку я использую os, я получаю эту ошибку:

Если вы запускаете «MyProgram.exe» и используете стандартные библиотеки, вы можете получить ошибки No module named....

В моем случае я получил:

Необработанное исключение: IronPython.Runtime.Exceptions.ImportException: нет модуля с именем med os
...

Чтобы решить эту проблему, скопируйте папку Lib из C:\Program Files (x86)\IronPython 2.7.1\ в только что созданную папку deploy. Затем, прежде чем импортировать библиотеки, которые выдают ошибки, измените MyProgram.py следующим образом:

import sys
sys.path.append("Lib")

# Followed by library imports that were causing you trouble:
import os

В качестве последнего шага также скопируйте следующие файлы из папки C:\Program Files (x86)\IronPython 2.7.1\ в папку deploy:

-IronPython.dll
-IronPython.Modules.dll
-Microsoft.Dynamic.dll
-Microsoft.Scripting.dll

Теперь вы можете заархивировать папку deploy и отправить ее!

person Gezim    schedule 31.07.2012