Python packages nashpy and axelrod preventing pyinstaller from working

34 Views Asked by At

I have a file file.py that builds a tkinter GUI with the following dependencies:

from tkinter import *
from tkinter import ttk
from tkinter import messagebox
from tkinter import filedialog
import nashpy as nash
import axelrod as axl
import numpy as np
import warnings

I'm trying to convert it to an exe file using pyinstaller, but it isn't working for two reasons, which I've narrowed down to the lines import nashpy as nash and import axelrod as axl.

When I try to convert file.py or the following testnash.py

# testnash.py
import nashpy as nash
inp = input("Press Enter")

using pyinstaller, it spits out some of the normal output I usually see with pyinstaller, but then towards the end, I get the following (truncated) error:

(...)
    target_modules = self._safe_import_hook(*import_info, **kwargs)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 437, in _safe_import_hook
    return super()._safe_import_hook(target_module_partname, source_module, target_attr_names, level, edge_attr)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2048, in _safe_import_hook
    target_modules = self.import_hook(
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1245, in import_hook
    submodule = self._safe_import_module(head, mname, submodule)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 484, in _safe_import_module
    return super()._safe_import_module(module_basename, module_name, parent_package)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1792, in _safe_import_module
    self._process_imports(n)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2591, in _process_imports
    target_modules = self._safe_import_hook(*import_info, **kwargs)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 437, in _safe_import_hook
    return super()._safe_import_hook(target_module_partname, source_module, target_attr_names, level, edge_attr)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2048, in _safe_import_hook
    target_modules = self.import_hook(
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1232, in import_hook
    target_package, target_module_partname = self._find_head_package(
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1411, in _find_head_package
    target_package = self._safe_import_module(
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 484, in _safe_import_module
    return super()._safe_import_module(module_basename, module_name, parent_package)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1792, in _safe_import_module
    self._process_imports(n)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2591, in _process_imports
    target_modules = self._safe_import_hook(*import_info, **kwargs)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 437, in _safe_import_hook
    return super()._safe_import_hook(target_module_partname, source_module, target_attr_names, level, edge_attr)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2048, in _safe_import_hook
    target_modules = self.import_hook(
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1245, in import_hook
    submodule = self._safe_import_module(head, mname, submodule)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 484, in _safe_import_module
    return super()._safe_import_module(module_basename, module_name, parent_package)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1792, in _safe_import_module
    self._process_imports(n)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2591, in _process_imports
    target_modules = self._safe_import_hook(*import_info, **kwargs)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 437, in _safe_import_hook
    return super()._safe_import_hook(target_module_partname, source_module, target_attr_names, level, edge_attr)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2048, in _safe_import_hook
    target_modules = self.import_hook(
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1232, in import_hook
    target_package, target_module_partname = self._find_head_package(
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1411, in _find_head_package
    target_package = self._safe_import_module(
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 484, in _safe_import_module
    return super()._safe_import_module(module_basename, module_name, parent_package)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1792, in _safe_import_module
    self._process_imports(n)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2591, in _process_imports
    target_modules = self._safe_import_hook(*import_info, **kwargs)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 437, in _safe_import_hook
    return super()._safe_import_hook(target_module_partname, source_module, target_attr_names, level, edge_attr)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2048, in _safe_import_hook
    target_modules = self.import_hook(
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1245, in import_hook
    submodule = self._safe_import_module(head, mname, submodule)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 484, in _safe_import_module
    return super()._safe_import_module(module_basename, module_name, parent_package)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1792, in _safe_import_module
    self._process_imports(n)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2591, in _process_imports
    target_modules = self._safe_import_hook(*import_info, **kwargs)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 437, in _safe_import_hook
    return super()._safe_import_hook(target_module_partname, source_module, target_attr_names, level, edge_attr)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2048, in _safe_import_hook
    target_modules = self.import_hook(
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1232, in import_hook
    target_package, target_module_partname = self._find_head_package(
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1411, in _find_head_package
    target_package = self._safe_import_module(
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 484, in _safe_import_module
    return super()._safe_import_module(module_basename, module_name, parent_package)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1792, in _safe_import_module
    self._process_imports(n)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2591, in _process_imports
    target_modules = self._safe_import_hook(*import_info, **kwargs)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 437, in _safe_import_hook
    return super()._safe_import_hook(target_module_partname, source_module, target_attr_names, level, edge_attr)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2048, in _safe_import_hook
    target_modules = self.import_hook(
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1232, in import_hook
    target_package, target_module_partname = self._find_head_package(
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1411, in _find_head_package
    target_package = self._safe_import_module(
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 484, in _safe_import_module
    return super()._safe_import_module(module_basename, module_name, parent_package)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1792, in _safe_import_module
    self._process_imports(n)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2591, in _process_imports
    target_modules = self._safe_import_hook(*import_info, **kwargs)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 368, in _safe_import_hook
    excluded_imports = self._find_all_excluded_imports(source_module.identifier)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\analysis.py", line 356, in _find_all_excluded_imports
    excluded_imports.update(module_hook.excludedimports)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\imphook.py", line 316, in __getattr__
    self._load_hook_module()
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\depend\imphook.py", line 383, in _load_hook_module
    self._hook_module = importlib_load_source(self.hook_module_name, self.hook_filename)
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\compat.py", line 577, in importlib_load_source
    mod_loader.exec_module(mod)
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\hooks\hook-matplotlib.py", line 34, in <module>
    if compat.is_win and hookutils.check_requirement('matplotlib >= 3.7.0'):
  File "C:\Users\<user>\anaconda3\lib\site-packages\PyInstaller\utils\hooks\__init__.py", line 414, in check_requirement
    return parsed_requirement.specifier.contains(version, prereleases=True)
  File "C:\Users\<user>\anaconda3\lib\site-packages\packaging\specifiers.py", line 905, in contains
    item = Version(item)
  File "C:\Users\<user>\anaconda3\lib\site-packages\packaging\version.py", line 196, in __init__
    match = self._regex.search(version)
TypeError: expected string or bytes-like object

I'm not sure what to make of this, however. I tried installing auto-py-to-exe and converting it that way, but I got the same output.

When I comment out import nashpy as nash and try to convert file.py with just import axelrod as axl there, pyinstaller seems to work and does create file.exe, but when I try to run it, I get this ModuleNotFoundError this, even though when I run file.py in VSCode it runs with axelrod just fine.

I've seen this page and this page, which was linked on it, about making sure everything is packaged correctly. I tried some of the things listed there, but haven't had any luck. I've tried using --onedir instead of --onefile. I've tried reinstalling pyinstaller. I've tried running it in Command Prompt vs a conda environment.

I'm using pyinstaller 6.4.0 and Python 3.9.18. Do I need to try a different version of pyinstaller? If so, how do I know which one? Is my program doomed to be a py file forever?

0

There are 0 best solutions below