mit neuen venv und exe-Files
This commit is contained in:
73
venv3_12/Lib/site-packages/cx_Freeze/hooks/tensorflow.py
Normal file
73
venv3_12/Lib/site-packages/cx_Freeze/hooks/tensorflow.py
Normal file
@@ -0,0 +1,73 @@
|
||||
"""A collection of functions which are triggered automatically by finder when
|
||||
tensorflow package is included.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from cx_Freeze._compat import IS_MINGW, IS_WINDOWS
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from cx_Freeze.finder import ModuleFinder
|
||||
from cx_Freeze.module import Module
|
||||
|
||||
|
||||
def load_tensorflow(finder: ModuleFinder, module: Module) -> None:
|
||||
"""Hook for tensorflow. Tested in Windows and Linux."""
|
||||
module_path = module.file.parent
|
||||
site_packages_path = module_path.parent
|
||||
|
||||
# implicitly loaded packages
|
||||
finder.include_package("tensorboard")
|
||||
finder.include_package("tensorflow.compiler")
|
||||
finder.include_package("tensorflow.python")
|
||||
|
||||
# support for plugins
|
||||
source_path = site_packages_path / "tensorflow-plugins"
|
||||
if source_path.is_dir():
|
||||
pattern = "*.dll" if (IS_WINDOWS or IS_MINGW) else "*.so"
|
||||
for source in source_path.rglob(pattern): # type: Path
|
||||
target = "lib" / source.relative_to(site_packages_path)
|
||||
finder.include_files(source, target)
|
||||
|
||||
# patch the code to search the correct directory
|
||||
code_string = module.file.read_text(encoding="utf_8")
|
||||
code_string = code_string.replace(
|
||||
"_site_packages_dirs = []",
|
||||
"_site_packages_dirs = [_os.path.join(_sys.frozen_dir,'lib')]",
|
||||
)
|
||||
code_string = code_string.replace(
|
||||
"_current_file_location = ",
|
||||
"_current_file_location = __file__.replace('library.zip/', '') #",
|
||||
)
|
||||
module.code = compile(
|
||||
code_string,
|
||||
module.file.as_posix(),
|
||||
"exec",
|
||||
dont_inherit=True,
|
||||
optimize=finder.optimize,
|
||||
)
|
||||
|
||||
# installed version of tensorflow is a variant?
|
||||
if module.distribution is None:
|
||||
for name in (
|
||||
"tensorflow-aarch64",
|
||||
"tensorflow-cpu",
|
||||
"tensorflow-cpu-aws",
|
||||
"tensorflow-gpu",
|
||||
"tensorflow-intel",
|
||||
"tensorflow-macos",
|
||||
"tensorflow-rocm",
|
||||
):
|
||||
module.update_distribution(name)
|
||||
if module.distribution is not None:
|
||||
break
|
||||
|
||||
# remove run-time warning
|
||||
# WARNING:tensorflow:AutoGraph is not available in this environment: ...
|
||||
source_path = site_packages_path / "tensorflow/python/autograph"
|
||||
for source in source_path.rglob("*.py"): # type: Path
|
||||
target = "lib" / source.relative_to(site_packages_path)
|
||||
finder.include_files(source, target)
|
||||
finder.exclude_module("tensorflow.python.autograph")
|
||||
Reference in New Issue
Block a user