Типа DISCLAIMER :-)
В тэгах прописал PYTHON потому что я не нашёл тэга именно про IronPython, хотя вопрос больше относится именно к связке IronPython и mono, чем к просто Python.
Компилирую простейший файл при помощи IronPhyton:
pfemidi@pfemidi:~/VirtualBox VMs/shared/foobar$ cat foobar.py
print('Hello, world!')
pfemidi@pfemidi:~/VirtualBox VMs/shared/foobar$ ipyc /target:exe /main:foobar.py
IronPython Compiler for IronPython 3.4.1 (3.4.1.0)
Input Files:
foobar.py
Output:
foobar
OutputPath:
Target:
ConsoleApplication
Platform:
AMD64
compiling...
Saved to foobar.exe
pfemidi@pfemidi:~/VirtualBox VMs/shared/foobar$
Когда пытаюсь запустить получившийся .exe получаю по башке от mono:
pfemidi@pfemidi:~/VirtualBox VMs/shared/foobar$ mono foobar.exe
Error occurred: No module named '__main__'
pfemidi@pfemidi:~/VirtualBox VMs/shared/foobar$
В то же время тот же самый файл без перекомпиляции, но запущенный не под mono, а под обычным .NET в виндах нормально отрабатывает и ничего не требует:
Z:\foobar>foobar.exe
Hello, world!
Z:\foobar>
Почему так?
Версия IronPython -- 3.4.1
Версия Linux и mono:
pfemidi@pfemidi:~/VirtualBox VMs/shared/foobar$ cat /etc/fedora-release
Fedora release 40 (Forty)
pfemidi@pfemidi:~/VirtualBox VMs/shared/foobar$ mono --version
Mono JIT compiler version 6.12.0.199 (tarball Wed May 1 05:08:53 UTC 2024)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
Misc: softdebug
Interpreter: yes
LLVM: supported, not enabled.
Suspend: hybrid
GC: sgen (concurrent by default)
pfemidi@pfemidi:~/VirtualBox VMs/shared/foobar$
Версия Windows и .NET:
Z:\foobar>ver
Microsoft Windows [Version 10.0.19045.4957]
Z:\foobar>dotnet --list-sdks
8.0.400 [C:\Program Files\dotnet\sdk]
Z:\foobar>