Repository: iterative/dvc

Issue:
Missing package paramiko error for ssh connection when installing via conda-forge and pip
I wanted to use DVC to track files and push them via SSH to a remote repository. I am not sure if I misread the installation guide. I was assuming that installation via conda-forge would contain the ssh dependency as well.  However, when using DVC in my project and trying to push changes to a ssh remote I get the following error:

    ERROR: failed to push data to the cloud - URL {ssh:user@host/path/to/file}  is supported but requires these missing 
    dependencies: ['paramiko']. If you have installed dvc using pip, choose one of these options to proceed:

    1) Install specific missing dependencies:
        pip install paramiko
    2) Install dvc package that includes those missing dependencies:
        pip install 'dvc[ssh]'
    3) Install dvc package with all possible dependencies included:
        pip install 'dvc[all]

I have installed DVC via conda-forge and conda list shows: 
dvc                       1.7.3            py37hc8dfbb8_0    conda-forge
paramiko                  2.7.2              pyh9f0ad1d_0    conda-forge

**Output of `dvc version`:**

```console
$ dvc version

DVC version: 1.7.3 (conda)
---------------------------------
Platform: Python 3.7.0 on Windows-10-10.0.18362-SP0
Supports: azure, gdrive, gs, hdfs, http, https, s3, oss
Cache types: hardlink
Repo: dvc, git 

```

Installation of dvc or paramiko fails beause it is already part of the einvironment. Did I miss to install any package via conda to make it work? 

Edit:
--> the same occurs when installing via pip (pip install dvc[all])

```console
$ dvc version

DVC version: 1.7.4 (pip)
---------------------------------
Platform: Python 3.7.0 on Windows-10-10.0.18362-SP0
Supports: azure, gdrive, gs, hdfs, http, https, s3, oss, webdav, webdavs
Cache types: hardlink
Repo: dvc, git

```





Discussion:
@JenniferHem Could you show full log for ` pip install 'dvc[all]'`, please?
Not able to reproduce on linux, might be some windows-specific conflicts or something. Need to investigate.
Might be related to https://github.com/iterative/dvc/issues/4589 .
Also worth improving that error message, as we now know the package type and can choose an appropriate message.
Ok, found the cause: https://github.com/iterative/dvc/issues/4589#issuecomment-698366656 . Working on a fix.

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -92,14 +92,14 @@ def run(self):
 s3 = ["boto3>=1.9.201"]
 azure = ["azure-storage-blob>=12.0", "knack"]
 oss = ["oss2==2.6.1"]
-ssh = ["paramiko>=2.5.0"]
+ssh = ["paramiko[invoke]>=2.7.0"]
 hdfs = ["pyarrow>=0.17.0"]
 webdav = ["webdavclient3>=3.14.5"]
 # gssapi should not be included in all_remotes, because it doesn't have wheels
 # for linux and mac, so it will fail to compile if user doesn't have all the
 # requirements, including kerberos itself. Once all the wheels are available,
 # we can start shipping it by default.
-ssh_gssapi = ["paramiko[gssapi]>=2.5.0"]
+ssh_gssapi = ["paramiko[invoke,gssapi]>=2.7.0"]
 all_remotes = gs + s3 + azure + ssh + oss + gdrive + hdfs + webdav
 
 # Extra dependecies to run tests


Test patch: