@pfemidi
Тут могло бы быть краткое описание меня

Почему mono требует модуль __main__?

Типа 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>
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы