В документах PyInstaller они демонстрируют использование eval_statement()
и exec_statement()
, которые вызывают eval()
или exec()
в новом экземпляре Python. Но они не говорят, почему вы хотите запустить свой код в отдельном экземпляре.
Например, почему их пример:
from PyInstaller.utils.hooks import exec_statement
mpl_data_dir = exec_statement(
"import matplotlib; print(matplotlib._get_data_path())"
)
datas = [ (mpl_data_dir, "") ]
не может быть просто:
import matplotlib
datas = [(matplotlib._get_data_path(), "")]
Я пытался сделать это с моей собственной библиотекой и это, кажется, не приносит никакого вреда. Так почему дополнительная сложность? Почему все остальные хуки, включенные в PyInstaller, используют 1-й метод?