Я использую IronPyton 2.7.8 и ipyc.exe, а не Tools \ Scripts \ pyc.py, и это вносит некоторые различия, поэтому я оставляю здесь некоторую информацию.
1. использовать / вставлять и / автономный вариант
Если вы разделите ваш скрипт на несколько файлов py, то используйте параметр / embed с параметром / main, они сгенерируют один exe-файл, включающий все файлы скриптов py.
Например, у вас есть скрипт «MyMain.py» и «OtherFuncs.py», как показано ниже.
C: \ Program Files \ IronPython 2.7 \ ipyc.exe /main:MyMain.py OtherFuncs.py / embed / platform: x86 / автономный / target: winexe
/ опция standalone используется для включения базовых dll-файлов для IronPython в папку C: \ Program Files \ IronPython 2.7 \, например IronPython.dll, IronPython.Modules.dll, Microsoft.Dynamic.dll и Microsoft.Scripting.dll
Но будьте осторожны, что DLL / IronPyton.SQLite.dll и DLL / IronPtyhon.WPF.dll не включены, поэтому, если вы используете в своем скрипте функциональность WPF или SQLite, вам следует дополнительно скопировать и распространить эти dll-файлы вместе с вашим exe-файлом. файл, и вы должны добавить следующую строку в вашем скрипте
clr.AddReference("IronPython.Wpf")
clr.AddReference("IronPython.SQLite")
2. файлы сценариев библиотек в папке C: \ Program Files \ IronPython 2.7 \ Lib
ваш сценарий использует множество стандартных функций, поддерживаемых файлами сценариев библиотеки в папке C: \ Program Files \ IronPython 2.7 \ Lib, поэтому вы должны распространять эти файлы сценариев вместе с вашим exe-файлом.
есть две опции: одна просто копирует папку Lib в папку с вашим exe-файлом, а другая создает StdLib.dll со всеми стандартными файлами сценариев библиотеки в качестве следующей команды.
C: \ Program Files \ IronPython 2.7 \ ipyc.exe /main:StdLib.py io.py sys.py ... все необходимые файлы сценариев ... / embed / platform: x86 / target: dll
StdLib.py - это просто пустой файл с размером 0, это хак для создания одного файла DLL. и вы должны добавить следующие строки в самой первой строке вашего скрипта.
import clr
clr.AddReference("StdLib")
Я использую скрипт на python, что делает StdLib.dll примерно следующим образом.
#...
#Build StdLib.DLL
ipath = 'C:\Program Files\IronPython 2.7'
ipyc = ipath + '\ipyc.exe'
# any library files you need
gb += glob.glob(r".\Lib\*.py")
gb += glob.glob(r".\Lib\encodings\*.py")
# ...
gb = [ipyc,"/main:StdLib.py","/embed","/platform:x86","/target:dll"] + gb
subprocess.call(gb)
print "Made StdLib"