import: fails with ModuleNotFoundError (win32timezone) when importing private repository using ssh using dvc from Windows Installer
See original GitHub issueBug Report
Description
According to the guide, we need to use the git/ssh protocol when working with private repositories. Following this recommendation, a dvc import fails with ModuleNotFoundError: No module named 'win32timezone'. Trying again, but this time using https, I get dulwich.client.HTTPUnauthorized: No valid credentials provided (as expected according to your guide).
Reproduce
- Install dvc 2.10.1 using the Windows Installer.
- Clone a dvc project.
- Run
dvc import --verbose git@github.com:YourOrg/YourPrivateRepo.git AFolder/ADvcFolder -o AFolder/ADvcFolder
YourOrg/YourPrivateRepo.git - This is a private repo initialised with dvc.
ADvcFolder - Is a dvc tracked folder (e.g. via dvc add AFolder/ADvcFolder in the private repo)
Expected
Import should succeed without error.
Environment information
Output of dvc doctor:
$ dvc doctor
DVC version: 2.10.1 (exe)
---------------------------------
Platform: Python 3.8.10 on Windows-10-10.0.19044-SP0
Supports:
azure (adlfs = 2022.2.0, knack = 0.9.0, azure-identity = 1.9.0),
gdrive (pydrive2 = 1.10.0),
gs (gcsfs = 2022.3.0),
hdfs (fsspec = 2022.3.0, pyarrow = 7.0.0),
webhdfs (fsspec = 2022.3.0),
http (aiohttp = 3.8.1, aiohttp-retry = 2.4.6),
https (aiohttp = 3.8.1, aiohttp-retry = 2.4.6),
s3 (s3fs = 2022.3.0, boto3 = 1.21.21),
ssh (sshfs = 2022.3.1),
oss (ossfs = 2021.8.0),
webdav (webdav4 = 0.9.5),
webdavs (webdav4 = 0.9.5)
Cache types: <https://error.dvc.org/no-dvc-cache>
Caches: local
Remotes: local
Workspace directory: NTFS on D:\
Repo: dvc, git
Output of dvc import:
$ dvc import --verbose git@github.com:YourOrg/YourPrivateRepo.git AFolder/ADvcFolder -o AFolder/ADvcFolder
2022-04-15 23:40:52,341 DEBUG: Removing output 'AFolder\ADvcFolder' of stage: 'AFolder\ADvcFolder.dvc'.
2022-04-15 23:40:52,343 DEBUG: Removing 'D:\TestProject\AFolder\ADvcFolder'
Importing 'AFolder/ADvcFolder (git@github.com:YourOrg/YourPrivateRepo.git)' -> 'AFolder\ADvcFolder'
2022-04-15 23:40:52,352 DEBUG: Computed stage: 'AFolder\ADvcFolder.dvc' md5: '0f2babe69537617c1ffa8526e9d72c0a'
2022-04-15 23:40:52,353 DEBUG: 'md5' of stage: 'AFolder\ADvcFolder.dvc' changed.
2022-04-15 23:40:52,355 DEBUG: Creating external repo git@github.com:YourOrg/YourPrivateRepo.git@None
2022-04-15 23:40:52,356 DEBUG: erepo: git clone 'git@github.com:YourOrg/YourPrivateRepo.git' to a temporary dir
2022-04-15 23:40:53,433 ERROR: failed to import 'AFolder/ADvcFolder from 'git@github.com:YourOrg/YourPrivateRepo.git'. - Failed to clone repo 'git@github.com:YourOrg/YourPrivateRepo.git' to 'C:\Users\user\AppData\Local\Temp\tmpbeadgsg7dvc-clone'
------------------------------------------------------------
Traceback (most recent call last):
File "scmrepo\git\backend\dulwich\__init__.py", line 193, in clone
File "dulwich\porcelain.py", line 443, in clone
File "dulwich\client.py", line 535, in clone
File "dulwich\client.py", line 601, in fetch
File "dulwich\client.py", line 1088, in fetch_pack
File "dulwich\client.py", line 1756, in _connect
File "fsspec\asyn.py", line 85, in wrapper
File "fsspec\asyn.py", line 65, in sync
File "fsspec\asyn.py", line 25, in _runner
File "scmrepo\git\backend\dulwich\asyncssh_vendor.py", line 149, in _run_command
File "asyncssh\connection.py", line 7687, in connect
File "asyncio\tasks.py", line 455, in wait_for
File "asyncssh\connection.py", line 429, in _connect
File "asyncio\base_events.py", line 1050, in create_connection
File "asyncio\base_events.py", line 1068, in _create_connection_transport
File "asyncssh\connection.py", line 7678, in conn_factory
File "asyncssh\connection.py", line 3064, in __init__
File "asyncssh\gss_win32.py", line 168, in __init__
File "sspi.py", line 200, in __init__
ModuleNotFoundError: No module named 'win32timezone'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "dvc\scm.py", line 106, in clone
File "scmrepo\git\__init__.py", line 143, in clone
File "scmrepo\git\backend\dulwich\__init__.py", line 196, in clone
scmrepo.exceptions.CloneError: Failed to clone repo 'git@github.com:YourOrg/YourPrivateRepo.git' to 'C:\Users\user\AppData\Local\Temp\tmpbeadgsg7dvc-clone'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "dvc\commands\imp.py", line 15, in run
File "dvc\repo\imp.py", line 6, in imp
File "dvc\repo\__init__.py", line 48, in wrapper
File "dvc\repo\scm_context.py", line 152, in run
File "dvc\repo\imp_url.py", line 83, in imp_url
File "funcy\decorators.py", line 45, in wrapper
File "dvc\stage\decorators.py", line 36, in rwlocked
File "funcy\decorators.py", line 66, in __call__
File "dvc\stage\__init__.py", line 533, in run
File "funcy\decorators.py", line 45, in wrapper
File "dvc\stage\decorators.py", line 36, in rwlocked
File "funcy\decorators.py", line 66, in __call__
File "dvc\stage\__init__.py", line 557, in _sync_import
File "dvc\stage\imports.py", line 47, in sync_import
File "dvc\dependency\repo.py", line 66, in download
File "dvc\dependency\repo.py", line 107, in _get_used_and_obj
File "contextlib.py", line 113, in __enter__
File "dvc\external_repo.py", line 36, in external_repo
File "dvc\external_repo.py", line 162, in _cached_clone
File "funcy\decorators.py", line 45, in wrapper
File "funcy\flow.py", line 274, in wrap_with
File "funcy\decorators.py", line 66, in __call__
File "dvc\external_repo.py", line 232, in _clone_default_branch
File "dvc\scm.py", line 108, in clone
dvc.scm.CloneError: Failed to clone repo 'git@github.com:YourOrg/YourPrivateRepo.git' to 'C:\Users\user\AppData\Local\Temp\tmpbeadgsg7dvc-clone'
------------------------------------------------------------
2022-04-15 23:40:53,453 DEBUG: Analytics is enabled.
2022-04-15 23:40:53,456 DEBUG: Trying to spawn '['daemon', '-q', 'analytics', 'C:\\Users\\user\\AppData\\Local\\Temp\\tmpnnqcpnag']'
2022-04-15 23:40:53,461 DEBUG: Spawned '['daemon', '-q', 'analytics', 'C:\\Users\\user\\AppData\\Local\\Temp\\tmpnnqcpnag']'
Issue Analytics
- State:
- Created a year ago
- Comments:9 (1 by maintainers)
Top Results From Across the Web
ImportError: No module named win32timezone when i make a ...
the -v flag no longer works (shows the version now). First, find out which module is missing. You can do this by executing...
Read more >Is it possible to use pip to install a package from a private ...
As the title suggests I am trying to install a Python package from a private GitHub repository. For a ... even possible?
Read more >No module named 'win32timezone' - Pyinstaller - 네이버 블로그
Windows10 $ pyinstaller -F --hidden-import win32timezone script.py. Using Python to Make a Windows Service - CodeProject.
Read more >ImportError: No module named win32timezone when i make a ...
First, find out which module is missing. You can do this by executing the exe through PowerShell/cmd. For example, if your file is...
Read more >[Solved] ImportError: No module named win32timezone when
Hidden imports can occur when the code is using import or perhaps exec or eval. Hidden imports can also occur when an extension...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
@efiop Sorry for the delay - just had a chance to install and try it. Can confirm
dvc importis working again as expected for the 2.35.2 binary install. Thanks for the fix!Having the same issue of the missing
win32timezonemodule with Win installer 2.18.0 (both in powershell and git bash). My workaround was installing dvc via pip and a venv. I think more issues like #2754, #7505 and this problem discussion are connected to this. The merged PR #2763 seems to address it but we’re still having thewin32timezoneissue after all?!