sdispater / pendulum

Python datetimes made easy
https://pendulum.eustace.io
MIT License
6.24k stars 387 forks source link

Python files missing when "successfully" installed with pip (both in built wheel and later in site-packages) #614

Open kreymerman opened 2 years ago

kreymerman commented 2 years ago

Issue

Pip somehow fails to install the library correctly on my machine. After the installation, the target folder contains only the files

    m:\pendulum_test\.venv\lib\site-packages\pendulum\_extensions\_helpers.cp39-win_amd64.pyd
    m:\pendulum_test\.venv\lib\site-packages\pendulum\parsing\_iso8601.cp39-win_amd64.pyd    
    m:\pendulum_test\.venv\lib\site-packages\pendulum\py.typed

and all .py files are missing. And obviously nothing from the pendulum module works.

I was able to trace that the wheel that is built during the installation (since PyPI does not have an version for Python 3.9 on Windows) does not contain any python files already (the small size=24786 indicates that).

Running pip wheel pendulum-2.1.2.tar.gz with tarball downloaded from PyPI produces the same broken wheel.

I have tried running from different shells, with or without venv, recreated venv, cleared the pip cache (http and wheels caches), tried different versions of pip, setuptools and wheel library and nothing helps. I would also be very glad if someone could advice what else could I try in order to find the cause of this behavior as there are no error messages (warning C4244 should not be a problem).

Full installation process:

Microsoft Windows [Version 10.0.19044.1586]
(c) Microsoft Corporation. Alle Rechte vorbehalten.

M:\pendulum>m:/pendulum_test/.venv/Scripts/activate.bat

(.venv) M:\pendulum_test>python -m pip install -U pip
Collecting pip
  Downloading pip-22.0.4-py3-none-any.whl (2.1 MB)
     |████████████████████████████████| 2.1 MB 3.3 MB/s
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 20.2.3
    Uninstalling pip-20.2.3:
      Successfully uninstalled pip-20.2.3
Successfully installed pip-22.0.4

(.venv) M:\pendulum_test>pip install -U setuptools wheel 
Requirement already satisfied: setuptools in m:\pendulum_test\.venv\lib\site-packages (49.2.1)
Collecting setuptools
  Downloading setuptools-62.1.0-py3-none-any.whl (1.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1/1.1 MB 9.1 MB/s eta 0:00:00
Collecting wheel
  Downloading wheel-0.37.1-py2.py3-none-any.whl (35 kB)
Installing collected packages: wheel, setuptools
  Attempting uninstall: setuptools
    Found existing installation: setuptools 49.2.1
    Uninstalling setuptools-49.2.1:
      Successfully uninstalled setuptools-49.2.1
Successfully installed setuptools-62.1.0 wheel-0.37.1

(.venv) M:\pendulum_test>pip cache purge
Files removed: 11

(.venv) M:\pendulum_test>pip install pendulum --verbose
Using pip 22.0.4 from m:\pendulum\.venv\lib\site-packages\pip (python 3.9)
Collecting pendulum
  Downloading pendulum-2.1.2.tar.gz (81 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 81.2/81.2 KB 2.2 MB/s eta 0:00:00
  Running command pip subprocess to install build dependencies
  Collecting poetry-core>=1.0.0a9
    Downloading poetry_core-1.1.0a7-py3-none-any.whl (423 kB)
       -------------------------------------- 423.9/423.9 KB 6.7 MB/s eta 0:00:00
  Installing collected packages: poetry-core
  Successfully installed poetry-core-1.1.0a7
  Installing build dependencies ... done
  Running command Getting requirements to build wheel
  Getting requirements to build wheel ... done
  Running command Preparing metadata (pyproject.toml)
  Preparing metadata (pyproject.toml) ... done
Collecting pytzdata>=2020.1
  Downloading pytzdata-2020.1-py2.py3-none-any.whl (489 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 490.0/490.0 KB 10.2 MB/s eta 0:00:00
Collecting python-dateutil<3.0,>=2.6
  Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 KB 15.8 MB/s eta 0:00:00
Collecting six>=1.5
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Building wheels for collected packages: pendulum
  Running command Building wheel for pendulum (pyproject.toml)
  _helpers.c
  pendulum/_extensions/_helpers.c(404): warning C4244: "Initialisierung": Konvertierung von "double" in "int", m”glicher Datenverlust
  pendulum/_extensions/_helpers.c(475): warning C4244: "+=": Konvertierung von "__int64" in "int32_t", m”glicher Datenverlust
  pendulum/_extensions/_helpers.c(515): warning C4244: "=": Konvertierung von "int64_t" in "int32_t", m”glicher Datenverlust
  pendulum/_extensions/_helpers.c(530): warning C4244: "=": Konvertierung von "int64_t" in "int32_t", m”glicher Datenverlust
  pendulum/_extensions/_helpers.c(532): warning C4244: "=": Konvertierung von "int64_t" in "int32_t", m”glicher Datenverlust
  pendulum/_extensions/_helpers.c(770): warning C4244: "+=": Konvertierung von "double" in "int", m”glicher Datenverlust
     Bibliothek "build\temp.win-amd64-3.9\Release\pendulum/_extensions\_helpers.cp39-win_amd64.lib" und Objekt "build\temp.win-amd64-3.9\Release\pendulum/_extensions\_helpers.cp39-win_amd64.exp" werden erstellt.
  Code wird generiert.
  Codegenerierung ist abgeschlossen.
  _iso8601.c
  pendulum/parsing/_iso8601.c(858): warning C4244: "=": Konvertierung von "double" in "int", m”glicher Datenverlust
  pendulum/parsing/_iso8601.c(860): warning C4244: "=": Konvertierung von "double" in "int", m”glicher Datenverlust
  pendulum/parsing/_iso8601.c(1061): warning C4244: "=": Konvertierung von "double" in "int", m”glicher Datenverlust
  pendulum/parsing/_iso8601.c(1139): warning C4244: "=": Konvertierung von "double" in "int", m”glicher Datenverlust
  pendulum/parsing/_iso8601.c(1141): warning C4244: "=": Konvertierung von "double" in "int", m”glicher Datenverlust
  pendulum/parsing/_iso8601.c(1166): warning C4244: "=": Konvertierung von "double" in "float", m”glicher Datenverlust
     Bibliothek "build\temp.win-amd64-3.9\Release\pendulum/parsing\_iso8601.cp39-win_amd64.lib" und Objekt "build\temp.win-amd64-3.9\Release\pendulum/parsing\_iso8601.cp39-win_amd64.exp" werden erstellt.
  Code wird generiert.
  Codegenerierung ist abgeschlossen.
  Building wheel for pendulum (pyproject.toml) ... done
  Created wheel for pendulum: filename=pendulum-2.1.2-cp39-cp39-win_amd64.whl size=24786 sha256=f6abb6a7fd419f012580bf04d6d7583bc00c4463167169816866ce3ca17e6e62
  Stored in directory: c:\users\micha\appdata\local\pip\cache\wheels\c9\c7\29\3cf0033406b18958d1a7b107c38be2405ef9c081b64a264fd5
Successfully built pendulum
Installing collected packages: six, pytzdata, python-dateutil, pendulum
Successfully installed pendulum-2.1.2 python-dateutil-2.8.2 pytzdata-2020.1 six-1.16.0
corrin commented 2 years ago

I had this too (I think).

I resolved it by reinstalling with --force

kreymerman commented 2 years ago

Thanks @corrin, do you mean --force-reinstall option for pip install?

Unfortunately this didn't help either (I actually re-created virtual environment before, even in a different folder and run installation again, which also didn't work, the same whl with missing files and therefore also broken installation in virtual environment is created):

image

Installation log with --force-reinstall:

(.venv) M:\VS Code tests\python\pendulum>pip cache purge                                   
Files removed: 11

(.venv) M:\VS Code tests\python\pendulum>pip install pendulum --force-reinstall           
Collecting pendulum
  Downloading pendulum-2.1.2.tar.gz (81 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 81.2/81.2 KB 4.7 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting pytzdata>=2020.1
  Downloading pytzdata-2020.1-py2.py3-none-any.whl (489 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 490.0/490.0 KB 10.2 MB/s eta 0:00:00
Collecting python-dateutil<3.0,>=2.6
  Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 KB 14.8 MB/s eta 0:00:00
Collecting six>=1.5
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Building wheels for collected packages: pendulum
  Building wheel for pendulum (pyproject.toml) ... done
  Created wheel for pendulum: filename=pendulum-2.1.2-cp39-cp39-win_amd64.whl size=24780 sha256=3732f69d19a7d94f83e4e0edde3c6ca5a78e30c22f4c6a49805d344e2474d75c
  Stored in directory: c:\users\micha\appdata\local\pip\cache\wheels\c9\c7\29\3cf0033406b18958d1a7b107c38be2405ef9c081b64a264fd5
Successfully built pendulum
Installing collected packages: six, pytzdata, python-dateutil, pendulum
  Attempting uninstall: six
    Found existing installation: six 1.16.0
    Uninstalling six-1.16.0:
      Successfully uninstalled six-1.16.0
  Attempting uninstall: pytzdata
    Found existing installation: pytzdata 2020.1
    Uninstalling pytzdata-2020.1:
      Successfully uninstalled pytzdata-2020.1
  Attempting uninstall: python-dateutil
    Found existing installation: python-dateutil 2.8.2
    Uninstalling python-dateutil-2.8.2:
      Successfully uninstalled python-dateutil-2.8.2
  Attempting uninstall: pendulum
    Found existing installation: pendulum 2.1.2
    Uninstalling pendulum-2.1.2:
      Successfully uninstalled pendulum-2.1.2
Successfully installed pendulum-2.1.2 python-dateutil-2.8.2 pytzdata-2020.1 six-1.16.0
kreymerman commented 2 years ago

I had a suspicion that poetry-core-1.1.0a7, which is used as pip build backend (it is visible in initial log above), is to blame here, because e.g.

pip wheel produces broken wheel of size=24779 with missing files:

Micha@MICHA-PC MINGW64 /m/VS Code tests/python/pendulum_test
$ pip wheel https://files.pythonhosted.org/packages/db/15/6e89ae7cde7907118769ed3d2481566d05b5fd362724025198bb95faf599/pendulum-2.1.2.tar.gz --verbose
Collecting https://files.pythonhosted.org/packages/db/15/6e89ae7cde7907118769ed3d2481566d05b5fd362724025198bb95faf599/pendulum-2.1.2.tar.gz
  Downloading pendulum-2.1.2.tar.gz (81 kB)
     ---------------------------------------- 81.2/81.2 KB 4.7 MB/s eta 0:00:00
  Installing build dependencies ...   Running command pip subprocess to install build dependencies
  Collecting poetry-core>=1.0.0a9
    Downloading poetry_core-1.1.0a7-py3-none-any.whl (423 kB)
       -------------------------------------- 423.9/423.9 KB 4.4 MB/s eta 0:00:00
  Installing collected packages: poetry-core
  Successfully installed poetry-core-1.1.0a7
done
  Getting requirements to build wheel ...   Running command Getting requirements to build wheel
done
  Preparing metadata (pyproject.toml) ...   Running command Preparing metadata (pyproject.toml)
done
Collecting pytzdata>=2020.1
  File was already downloaded m:\vs code tests\python\pendulum_test\pytzdata-2020.1-py2.py3-none-any.whl
Collecting python-dateutil<3.0,>=2.6
  File was already downloaded m:\vs code tests\python\pendulum_test\python_dateutil-2.8.2-py2.py3-none-any.whl
Collecting six>=1.5
  File was already downloaded m:\vs code tests\python\pendulum_test\six-1.16.0-py2.py3-none-any.whl
Building wheels for collected packages: pendulum
  Building wheel for pendulum (pyproject.toml) ...   Running command Building wheel for pendulum (pyproject.toml)
  _helpers.c
  pendulum/_extensions/_helpers.c(404): warning C4244: "Initialisierung": Konvertierung von "double" in "int", m”glicher Datenverlust
  pendulum/_extensions/_helpers.c(475): warning C4244: "+=": Konvertierung von "__int64" in "int32_t", m”glicher Datenverlust
  pendulum/_extensions/_helpers.c(515): warning C4244: "=": Konvertierung von "int64_t" in "int32_t", m”glicher Datenverlust
  pendulum/_extensions/_helpers.c(530): warning C4244: "=": Konvertierung von "int64_t" in "int32_t", m”glicher Datenverlust
  pendulum/_extensions/_helpers.c(532): warning C4244: "=": Konvertierung von "int64_t" in "int32_t", m”glicher Datenverlust
  pendulum/_extensions/_helpers.c(770): warning C4244: "+=": Konvertierung von "double" in "int", m”glicher Datenverlust
     Bibliothek "build\temp.win-amd64-3.9\Release\pendulum/_extensions\_helpers.cp39-win_amd64.lib" und Objekt "build\temp.win-amd64-3.9\Release\pendulum/_extensions\_helpers.cp39-win_amd64.exp" werden erstellt.
  Code wird generiert.
  Codegenerierung ist abgeschlossen.
  _iso8601.c
  pendulum/parsing/_iso8601.c(858): warning C4244: "=": Konvertierung von "double" in "int", m”glicher Datenverlust
  pendulum/parsing/_iso8601.c(860): warning C4244: "=": Konvertierung von "double" in "int", m”glicher Datenverlust
  pendulum/parsing/_iso8601.c(1061): warning C4244: "=": Konvertierung von "double" in "int", m”glicher Datenverlust
  pendulum/parsing/_iso8601.c(1139): warning C4244: "=": Konvertierung von "double" in "int", m”glicher Datenverlust
  pendulum/parsing/_iso8601.c(1141): warning C4244: "=": Konvertierung von "double" in "int", m”glicher Datenverlust
  pendulum/parsing/_iso8601.c(1166): warning C4244: "=": Konvertierung von "double" in "float", m”glicher Datenverlust
     Bibliothek "build\temp.win-amd64-3.9\Release\pendulum/parsing\_iso8601.cp39-win_amd64.lib" und Objekt "build\temp.win-amd64-3.9\Release\pendulum/parsing\_iso8601.cp39-win_amd64.exp" werden erstellt.
  Code wird generiert.
  Codegenerierung ist abgeschlossen.
done
  Created wheel for pendulum: filename=pendulum-2.1.2-cp39-cp39-win_amd64.whl size=24779 sha256=3f2f826420cde4e8ecc90a5789c0fb32ca5fe3cbdc850269d86910e6006f914c
  Stored in directory: c:\users\micha\appdata\local\pip\cache\wheels\76\ce\18\d6d0ab24c15c9e8460b0657def1382c9b299c3d44622d1d1f4
Successfully built pendulum
(.venv)

But I installed the current poetry preview (1.2.0b1) which also uses poetry-core 1.1.0a7 and run it with the source code in https://github.com/sdispater/pendulum/releases/tag/2.1.2:

Micha@MICHA-PC MSYS /m/VS Code tests/python/pendulum/pendulum-2.1.2
$ poetry --version
Poetry (version 1.2.0b1)

Micha@MICHA-PC MSYS /m/VS Code tests/python/pendulum/pendulum-2.1.2
$ poetry build -vvv
Loading configuration file C:\Users\Micha\AppData\Roaming\pypoetry\config.toml
Creating virtualenv pendulum in M:\VS Code tests\python\pendulum\pendulum-2.1.2\.venv
Using virtualenv: M:\VS Code tests\python\pendulum\pendulum-2.1.2\.venv
Building pendulum (2.1.2)
  - Building sdist
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\__version__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\constants.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\date.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\datetime.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\duration.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\exceptions.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\helpers.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\parser.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\period.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\py.typed
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\time.py
  - Adding: pyproject.toml
  - Adding: README.rst
  - Adding: LICENSE
  - Built pendulum-2.1.2.tar.gz
  - Building wheel
  - Executing build script: build.py
_helpers.c
pendulum/_extensions/_helpers.c(404): warning C4244: "Initialisierung": Konvertierung von "double" in "int", möglicher Datenverlust
pendulum/_extensions/_helpers.c(475): warning C4244: "+=": Konvertierung von "__int64" in "int32_t", möglicher Datenverlust
pendulum/_extensions/_helpers.c(515): warning C4244: "=": Konvertierung von "int64_t" in "int32_t", möglicher Datenverlust
pendulum/_extensions/_helpers.c(530): warning C4244: "=": Konvertierung von "int64_t" in "int32_t", möglicher Datenverlust
pendulum/_extensions/_helpers.c(532): warning C4244: "=": Konvertierung von "int64_t" in "int32_t", möglicher Datenverlust
pendulum/_extensions/_helpers.c(770): warning C4244: "+=": Konvertierung von "double" in "int", möglicher Datenverlust
   Bibliothek "build\temp.win-amd64-cpython-39\Release\pendulum/_extensions\_helpers.cp39-win_amd64.lib" und Objekt "build\temp.win-amd64-cpython-39\Release\pendulum/_extensions\_helpers.cp39-win_amd64.exp" werden erstellt.
Code wird generiert.
Codegenerierung ist abgeschlossen.
_iso8601.c
pendulum/parsing/_iso8601.c(858): warning C4244: "=": Konvertierung von "double" in "int", möglicher Datenverlust
pendulum/parsing/_iso8601.c(860): warning C4244: "=": Konvertierung von "double" in "int", möglicher Datenverlust
pendulum/parsing/_iso8601.c(1061): warning C4244: "=": Konvertierung von "double" in "int", möglicher Datenverlust
pendulum/parsing/_iso8601.c(1139): warning C4244: "=": Konvertierung von "double" in "int", möglicher Datenverlust
pendulum/parsing/_iso8601.c(1141): warning C4244: "=": Konvertierung von "double" in "int", möglicher Datenverlust
pendulum/parsing/_iso8601.c(1166): warning C4244: "=": Konvertierung von "double" in "float", möglicher Datenverlust
   Bibliothek "build\temp.win-amd64-cpython-39\Release\pendulum/parsing\_iso8601.cp39-win_amd64.lib" und Objekt "build\temp.win-amd64-cpython-39\Release\pendulum/parsing\_iso8601.cp39-win_amd64.exp" werden erstellt.
Code wird generiert.
Codegenerierung ist abgeschlossen.
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\__version__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\_extensions\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\_extensions\_helpers.c
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\_extensions\_helpers.cp39-win_amd64.pyd
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\_extensions\helpers.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\constants.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\date.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\datetime.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\duration.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\exceptions.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\formatting\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\formatting\difference_formatter.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\formatting\formatter.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\helpers.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\da\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\da\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\da\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\de\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\de\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\de\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\en\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\en\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\en\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\es\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\es\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\es\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\fa\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\fa\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\fa\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\fo\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\fo\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\fo\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\fr\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\fr\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\fr\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\id\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\id\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\id\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\it\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\it\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\it\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\ko\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\ko\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\ko\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\lt\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\lt\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\lt\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\nb\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\nb\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\nb\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\nl\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\nl\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\nl\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\nn\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\nn\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\nn\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\pl\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\pl\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\pl\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\pt_br\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\pt_br\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\pt_br\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\ru\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\ru\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\ru\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\zh\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\zh\custom.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\locales\zh\locale.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\mixins\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\mixins\default.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\parser.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\parsing\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\parsing\_iso8601.c
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\parsing\_iso8601.cp39-win_amd64.pyd
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\parsing\exceptions\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\parsing\iso8601.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\period.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\py.typed
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\time.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\tz\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\tz\data\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\tz\data\windows.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\tz\exceptions.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\tz\local_timezone.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\tz\timezone.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\tz\zoneinfo\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\tz\zoneinfo\exceptions.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\tz\zoneinfo\posix_timezone.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\tz\zoneinfo\reader.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\tz\zoneinfo\timezone.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\tz\zoneinfo\transition.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\tz\zoneinfo\transition_type.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\utils\__init__.py
  - Adding: M:\VS Code tests\python\pendulum\pendulum-2.1.2\pendulum\utils\_compat.py
Skipping: M:/VS Code tests/python/pendulum/pendulum-2.1.2/COPYING
  - Built pendulum-2.1.2-cp39-cp39-win_amd64.whl

and all needed files were included in the wheel in this case...

So this way I also could not find out why wheel pip install and pip wheel create broken wheels.

Apparently the problem does not occur with everyone, on a colleague's computer with exactly the same set of software there is no such issue.

I would be very thankful to get any additional tips on what else to try to find the cause.