webcomics/pywine

Pip install hangs when pywin32 is installed

Closed this issue · 3 comments

I'm trying to use pywine to create an executable for my application using PyInstaller.
When I'm trying to install a local repo using pip and pywin32 is installed (version 301) the pip install just hang forever (I waited about an hour) in here:

root@e225029e4eb2:/python-common/src# pip install -vvv .
Using pip 21.2.4 from c:\Python39\lib\site-packages\pip (python 3.9)
Non-user install because site-packages writeable
Created temporary directory: C:\users\root\Temp\pip-ephem-wheel-cache-ik6hvu14
Created temporary directory: C:\users\root\Temp\pip-req-tracker-yzt2tp9d
Initialized build tracking at C:\users\root\Temp\pip-req-tracker-yzt2tp9d
Created build tracker: C:\users\root\Temp\pip-req-tracker-yzt2tp9d
Entered build tracker: C:\users\root\Temp\pip-req-tracker-yzt2tp9d
Created temporary directory: C:\users\root\Temp\pip-install-bjs1v1us
Processing z:\python-common\src
  Created temporary directory: C:\users\root\Temp\pip-req-build-wrj0pq2i
  DEPRECATION: A future pip version will change local packages to be built in-place without first copying to a temporary directory. We recommen
d you use --use-feature=in-tree-build to test your packages with this new behavior before it becomes the default.
   pip 21.3 will remove support for this functionality. You can find discussion regarding this at https://github.com/pypa/pip/issues/7555.
  Added file:///Z:/python-common/src to build tracker 'C:\\users\\root\\Temp\\pip-req-tracker-yzt2tp9d'
    Running setup.py (path:C:\users\root\Temp\pip-req-build-wrj0pq2i\setup.py) egg_info for package from file:///Z:/python-common/src
    Created temporary directory: C:\users\root\Temp\pip-pip-egg-info-0hldjjus
    Running command python setup.py egg_info
    running egg_info
    creating C:\users\root\Temp\pip-pip-egg-info-0hldjjus\SafeBreach_Python_Common.egg-info
    writing C:\users\root\Temp\pip-pip-egg-info-0hldjjus\SafeBreach_Python_Common.egg-info\PKG-INFO
    writing dependency_links to C:\users\root\Temp\pip-pip-egg-info-0hldjjus\SafeBreach_Python_Common.egg-info\dependency_links.txt
    writing requirements to C:\users\root\Temp\pip-pip-egg-info-0hldjjus\SafeBreach_Python_Common.egg-info\requires.txt
    writing top-level names to C:\users\root\Temp\pip-pip-egg-info-0hldjjus\SafeBreach_Python_Common.egg-info\top_level.txt
    writing manifest file 'C:\users\root\Temp\pip-pip-egg-info-0hldjjus\SafeBreach_Python_Common.egg-info\SOURCES.txt'
    reading manifest file 'C:\users\root\Temp\pip-pip-egg-info-0hldjjus\SafeBreach_Python_Common.egg-info\SOURCES.txt'
    writing manifest file 'C:\users\root\Temp\pip-pip-egg-info-0hldjjus\SafeBreach_Python_Common.egg-info\SOURCES.txt'

When I'm closing it using ctrl-c this is the error

^CERROR: Operation cancelled by user
Exception information:
Traceback (most recent call last):
  File "c:\Python39\lib\site-packages\pip\_internal\cli\base_command.py", line 173, in _main
    status = self.run(options, args)
  File "c:\Python39\lib\site-packages\pip\_internal\cli\req_command.py", line 203, in wrapper
    return func(self, options, args)
  File "c:\Python39\lib\site-packages\pip\_internal\commands\install.py", line 315, in run
    requirement_set = resolver.resolve(
  File "c:\Python39\lib\site-packages\pip\_internal\resolution\resolvelib\resolver.py", line 75, in resolve
    collected = self.factory.collect_root_requirements(root_reqs)
  File "c:\Python39\lib\site-packages\pip\_internal\resolution\resolvelib\factory.py", line 471, in collect_root_requirements
    req = self._make_requirement_from_install_req(
  File "c:\Python39\lib\site-packages\pip\_internal\resolution\resolvelib\factory.py", line 433, in _make_requirement_from_install_req
    cand = self._make_candidate_from_link(
  File "c:\Python39\lib\site-packages\pip\_internal\resolution\resolvelib\factory.py", line 204, in _make_candidate_from_link
    self._link_candidate_cache[link] = LinkCandidate(
  File "c:\Python39\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 295, in __init__
    super().__init__(
  File "c:\Python39\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 156, in __init__
    self.dist = self._prepare()
  File "c:\Python39\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 227, in _prepare
    dist = self._prepare_distribution()
  File "c:\Python39\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 305, in _prepare_distribution
    return self._factory.preparer.prepare_linked_requirement(
  File "c:\Python39\lib\site-packages\pip\_internal\operations\prepare.py", line 508, in prepare_linked_requirement
    return self._prepare_linked_requirement(req, parallel_builds)
  File "c:\Python39\lib\site-packages\pip\_internal\operations\prepare.py", line 570, in _prepare_linked_requirement
    dist = _get_prepared_distribution(
  File "c:\Python39\lib\site-packages\pip\_internal\operations\prepare.py", line 60, in _get_prepared_distribution
    abstract_dist.prepare_distribution_metadata(finder, build_isolation)
  File "c:\Python39\lib\site-packages\pip\_internal\distributions\sdist.py", line 36, in prepare_distribution_metadata
    self.req.prepare_metadata()
  File "c:\Python39\lib\site-packages\pip\_internal\req\req_install.py", line 528, in prepare_metadata
    self.metadata_directory = self._generate_metadata()
  File "c:\Python39\lib\site-packages\pip\_internal\req\req_install.py", line 504, in _generate_metadata
    return generate_metadata_legacy(
  File "c:\Python39\lib\site-packages\pip\_internal\operations\build\metadata_legacy.py", line 67, in generate_metadata
    call_subprocess(
  File "c:\Python39\lib\site-packages\pip\_internal\utils\subprocess.py", line 194, in call_subprocess
    line = proc.stdout.readline()  # type: str
  File "c:\Python39\lib\encodings\cp1252.py", line 22, in decode
    def decode(self, input, final=False):
KeyboardInterrupt
Removed file:///Z:/python-common/src from build tracker 'C:\\users\\root\\Temp\\pip-req-tracker-yzt2tp9d'
Removed build tracker: 'C:\\users\\root\\Temp\\pip-req-tracker-yzt2tp9d'

If I'm removing pywin32 the pip install continue as normal, I also tried using xvfb-run with the same results, I just can't understand why it happens.

Any idea how to work around it?

TobiX commented

No idea, sorry...

The biggest problem I had with this setup revolved around terminal magic, so maybe this is related? Try piping pip to a file (2>&1 | tee log.txt) or running inside wineconsole...

@TobiX Unfortunately I could not find the root cause, I ended up just pip uninstall pywin32 after each project install.

TobiX commented

I cannot reproduce this in any recent image. Feel free to reopen if this is still an issue. Please provide a minimal reproducer, if possible.