Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cx_Freeze 7.0.0 and PyTorch 2.2.2+cu118: TypeError: argument docstring of add_docstring should be a str #2354

Closed
bw7715 opened this issue Apr 24, 2024 · 5 comments · Fixed by #2358

Comments

@bw7715
Copy link

bw7715 commented Apr 24, 2024

Describe the bug
An error occurs when try to freeze pytorch project with cx-Freeze.

copying C:\Project\_build\venv\lib\site-packages\torch\functional.py -> C:\Project\_build\out\lib\torch\functional.py
Traceback (most recent call last):
  File "C:\Project\_build\venv\Lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 138, in run
    module_init.run(name + "__main__")
  File "C:\Project\_build\venv\Lib\site-packages\cx_Freeze\initscripts\console.py", line 17, in run
    exec(code, module_main.__dict__)
  File "project.py", line 1, in <module>
    import torch
  File "C:/Users/bw7715/OneDrive - Zebra Technologies/Projects/python_projects/cx_freeze_issues/p39_cx70_tf_np/_build/venv/lib/site-packages/torch/__init__.py", line 1215, in <module>
    from .storage import _StorageBase, TypedStorage, _LegacyStorage, UntypedStorage, _warn_typed_storage_removal
  File "C:\Project\_build\venv\lib\site-packages\torch\storage.py", line 14, in <module>
    import numpy as np
  File "C:\Project\_build\venv\lib\site-packages\numpy\__init__.py", line 173, in <module>
    from . import core
  File "C:\Project\_build\venv\lib\site-packages\numpy\core\__init__.py", line 24, in <module>
    from . import multiarray
  File "C:\Project\_build\venv\lib\site-packages\numpy\core\multiarray.py", line 86, in <module>
    def empty_like(prototype, dtype=None, order=None, subok=None, shape=None):
  File "C:\Project\_build\venv\lib\site-packages\numpy\core\overrides.py", line 178, in decorator
    return array_function_dispatch(
  File "C:\Project\_build\venv\lib\site-packages\numpy\core\overrides.py", line 158, in decorator
    add_docstring(implementation, dispatcher.__doc__)
TypeError: argument docstring of add_docstring should be a str

To Reproduce
requirements.txt

--find-links https://download.pytorch.org/whl/cu118/torch_stable.html

cx_Freeze==7.0.0
torch==2.2.2+cu118
torchvision==0.17.2+cu118

freeze.bat

echo off
set WORKSPACE=%~dp0

set BUILD_DIRPATH=%WORKSPACE%\_build
set BASE_PYTHON_DIRPATH=C:\Program Files\Python39

set VENV_DIRPATH=%BUILD_DIRPATH%\venv
set TARGET_DIR=%BUILD_DIRPATH%\out

set SCRIPTS_DIRPATH=%VENV_DIRPATH%\Scripts
set PYTHON_EXE_PATH="%SCRIPTS_DIRPATH%\python.exe"
set FREEZER_EXE_PATH="%SCRIPTS_DIRPATH%\cxfreeze.exe"

set TARGET_NAME=project_out.exe
set PROJECT_SOURCE_PY_PATH=project.py

set PACKAGES=torch


"%BASE_PYTHON_DIRPATH%\python" -m venv "%VENV_DIRPATH%"
%PYTHON_EXE_PATH% -m pip install -r requirements.txt

rem %PYTHON_EXE_PATH% -m pip install --pre --extra-index-url https://marcelotduarte.github.io/packages/ cx_Freeze --upgrade

%FREEZER_EXE_PATH% build -O1 -O2 --include-msvcr --build-exe="%TARGET_DIR%" --target-name=%TARGET_NAME% --packages=%PACKAGES% --script=%PROJECT_SOURCE_PY_PATH%


"%TARGET_DIR%\%TARGET_NAME%"

project.py

import torch

print(torch.__version__)

Desktop (please complete the following information):

  • Platform information: Windows 10 and Ubuntu Linux 22.04
  • OS architecture (e.g. amd64): 64bit
  • cx_Freeze version: 7.0.0
  • Python version: 3.9

pip list:

.\python.exe -m pip list
Package           Version
----------------- ------------
cx_Freeze         7.0.0
cx_Logging        3.2.0
filelock          3.13.4
fsspec            2024.3.1
Jinja2            3.1.3
lief              0.14.1
MarkupSafe        2.1.5
mpmath            1.3.0
networkx          3.2.1
numpy             1.26.4
pillow            10.3.0
pip               22.0.4
setuptools        69.5.1
sympy             1.12
torch             2.2.2+cu118
torchvision       0.17.2+cu118
typing_extensions 4.11.0
wheel             0.43.0

With cx_Freeze==6.15.16 this project works.

@bw7715
Copy link
Author

bw7715 commented Apr 24, 2024

When try to use pip install --force --no-cache --pre --extra-index-url https://marcelotduarte.github.io/packages/ cx_Freeze with cx_Freeze-7.1.0.dev3-cp39-cp39-win_amd64 I get the same error.

@bw7715
Copy link
Author

bw7715 commented Apr 24, 2024

I noticed also that with cx_Freeze-7.1.0.dev3 there is an error during freezing:

Looking in indexes: https://pypi.org/simple, https://marcelotduarte.github.io/packages/
Collecting cx_Freeze
  Downloading https://marcelotduarte.github.io/packages/cx-freeze/cx_Freeze-7.1.0.dev3-cp39-cp39-win_amd64.whl (2.0 MB)
     ---------------------------------------- 2.0/2.0 MB 1.4 MB/s eta 0:00:00
Collecting wheel<=0.43.0,>=0.42.0
  Downloading wheel-0.43.0-py3-none-any.whl (65 kB)
     ---------------------------------------- 65.8/65.8 KB 107.6 kB/s eta 0:00:00
Collecting setuptools<70,>=62.6
  Downloading setuptools-69.5.1-py3-none-any.whl (894 kB)
     ---------------------------------------- 894.6/894.6 KB 1.2 MB/s eta 0:00:00
Collecting lief<=0.15.0,>=0.12.0
  WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))': /latest/lief/lief-0.15.0-cp39-cp39-win_amd64.whl
  WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))': /latest/lief/lief-0.15.0-cp39-cp39-win_amd64.whl
  WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))': /latest/lief/lief-0.15.0-cp39-cp39-win_amd64.whl
  WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))': /latest/lief/lief-0.15.0-cp39-cp39-win_amd64.whl
  WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))': /latest/lief/lief-0.15.0-cp39-cp39-win_amd64.whl
ERROR: Could not install packages due to an OSError: HTTPSConnectionPool(host='lief.s3-website.fr-par.scw.cloud', port=443): Max retries exceeded with url: /latest/lief/lief-0.15.0-cp39-cp39-win_amd64.whl (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)')))

But once it has appeared, the process goes on.

In version 7.0.0 these errors and warnings do not appear

Looking in links: https://download.pytorch.org/whl/cu118/torch_stable.html
Collecting cx_Freeze==7.0.0
  Using cached cx_Freeze-7.0.0-cp39-cp39-win_amd64.whl (2.0 MB)
Collecting numpy==1.26.4
  Using cached numpy-1.26.4-cp39-cp39-win_amd64.whl (15.8 MB)
Collecting torch==2.2.2+cu118
  Using cached https://download.pytorch.org/whl/cu118/torch-2.2.2%2Bcu118-cp39-cp39-win_amd64.whl (2704.2 MB)
Collecting torchvision==0.17.2+cu118
  Using cached https://download.pytorch.org/whl/cu118/torchvision-0.17.2%2Bcu118-cp39-cp39-win_amd64.whl (4.9 MB)
Collecting lief<0.15.0,>=0.12.0
  Using cached lief-0.14.1-cp39-cp39-win_amd64.whl (2.2 MB)
Collecting cx-Logging>=3.1
  Using cached cx_Logging-3.2.0-cp39-cp39-win_amd64.whl (26 kB)

@marcelotduarte
Copy link
Owner

TypeError: argument docstring of add_docstring should be a str

I had already commented here:
"""
numpy uses its docstring, so remove the optimization that it works. The optimization works like described here.
See also: numpy/numpy#13248 (comment)
"""
And complementing the comment, I can say that in the previous version, when you used -O -OO in reality only -O ended up being used and it gave you the impression of using complete optimization. Therefore with numpy only -O1 can be used. I'll see if there's a way to restrict the optimization to just the numpy module.

ERROR: Could not install packages due to an OSError: HTTPSConnectionPool(host='lief.s3-website.fr-par.scw.cloud', ...

This is a server error when the protocols, certificates, have nothing to do with cx_Freeze. Alias is a pip command.

@marcelotduarte
Copy link
Owner

Thank you for insisting, so I decided to find a solution.
You can test the patch in the latest development build (dev4):
pip install --force --no-cache --pre --extra-index-url https://marcelotduarte.github.io/packages/ cx_Freeze

@bw7715
Copy link
Author

bw7715 commented Apr 25, 2024

Thank you, with version 7.1.0.dev4 this project works.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants