Extension with pywin32 dependancy

Hello everyone!

TLDR: pypiwin32 dependancy broken in Kit Python

I am currently writing an extension that uses the Python Docker SDK, on Windows, this depends on pypiwin32 for use of npipe.

The trouble I am having is that pypiwin32 is not being successfully installed in the Kit python environment.

Currently, in the extension’s extension.toml file I have:

[python.pipapi]
requirements = [
    "pypiwin32",
    "pywin32",
    "... other deps",
]

Which appears to correctly start the pip process, however, when attempting to use commands that require pypiwin32 I recieve errors such as:

“docker.errors.DockerException: Install pypiwin32 package to enable npipe:// support”

Investigating the modules installed in the Kit Python instance [help(‘modules’)], shows no reference to “pypiwin32”, “pywin32”, “win32api” etc - although other modules specified in the .toml file can now be found there.

I have also attempted to manually use the Omniverse pip api e.g.:

success = omni.kit.pipapi.install("pypiwin32", use_online_index=True, extra_args=["--upgrade"])

however, this gave the same outcome. As did capturing the pip command run by Omniverse and running it manually in the prompt.

I notice the pywin32 is mentioned in several of the automated tests bundled with the Omniverse, but I am unsure how to reuse what is there in my work.

I’d really appreciate any help that anyone could give me with this issue!

Many thanks and kind regards,

Oliver

My environment is:

  • Windows 10,
  • Create 2021.3.8
  • Kit 102.1.1

Hello there @oliver.woolland and welcome to the community! I contacted the Kit development team to help you on this post. We should hear back soon!

Thanks @WendyGram, I appreciate that! I’ve been able to work around the problem for now by getting Omniverse to use a system Python installation - but would greatly prefer not to do this.

Our pipapi extension, as you can see in the code, just calls python.exe -m pip install . You can also do it manually, by calling python.bat near kit.exeto try to repro and debug. From here all the errors that come are from pip or particular package it installs. I don’t know why that pypiwin32 fails.

You can also try installing it manually somewhere and adding that folder to sys.path to see if that would work.