39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
"""A collection of functions which are triggered automatically by finder when
|
|
mkl package is included.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from contextlib import suppress
|
|
from typing import TYPE_CHECKING
|
|
|
|
from cx_Freeze.exception import ModuleError
|
|
from cx_Freeze.module import DistributionCache
|
|
|
|
if TYPE_CHECKING:
|
|
from cx_Freeze.finder import ModuleFinder
|
|
from cx_Freeze.module import Module
|
|
|
|
# The sample/pandas is used to test using the following:
|
|
#
|
|
# - Ubuntu 22.04 w/ Python 3.10 and numpy+mkl
|
|
# pip install -i https://pypi.anaconda.org/intel/simple numpy
|
|
#
|
|
# - Windows w/ Python 3.9 to 3.12 using cgohlke/numpy-mkl-wheels
|
|
# Download: https://github.com/cgohlke/numpy-mkl-wheels/releases/
|
|
|
|
|
|
def load_mkl(finder: ModuleFinder, module: Module) -> None:
|
|
"""The mkl package."""
|
|
distribution = module.distribution
|
|
if distribution and distribution.installer == "pip":
|
|
for file in distribution.binary_files:
|
|
source = file.locate().resolve()
|
|
finder.include_files(source, f"lib/mkl/{source.name}")
|
|
for req_name in distribution.requires:
|
|
with suppress(ModuleError):
|
|
req_dist = DistributionCache(finder.cache_path, req_name)
|
|
for file in req_dist.binary_files:
|
|
source = file.locate().resolve()
|
|
finder.include_files(source, f"lib/mkl/{source.name}")
|