Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot import name 'SklearnDataModule' from 'pl_bolts.datamodules' #379

Closed
plpxsk opened this issue Nov 19, 2020 · 7 comments · Fixed by #380
Closed

Cannot import name 'SklearnDataModule' from 'pl_bolts.datamodules' #379

plpxsk opened this issue Nov 19, 2020 · 7 comments · Fixed by #380
Labels
help wanted Extra attention is needed
Milestone

Comments

@plpxsk
Copy link

plpxsk commented Nov 19, 2020

🐛 Bug

I cannot import a key module, even after a fresh install.

To Reproduce

Steps to reproduce the behavior:

Install package to fresh virtualenv and try import. Import fails. See code below.

This is on macOS Catalina Terminal with python 3.8.5

Code sample

$ python3 -m venv venv  
$ source venv/bin/activate 
(venv) $ pip install pytorch-lightning-bolts 
(venv) $ python
Python 3.8.5 (default, Jul 21 2020, 10:48:26) 
[Clang 11.0.3 (clang-1103.0.32.62)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
 >>> from pl_bolts.datamodules import SklearnDataModule

Error 1: This fails with:

>>> from pl_bolts.datamodules import SklearnDataModule


/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv/lib/python3.8/site-packages/pl_bolts/models/mnist_module.py:14: UserWarning: You want to use `torchvision` which is not installed yet, install it with `pip install torchvision`.
  warn('You want to use `torchvision` which is not installed yet,'  # pragma: no-cover
/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv/lib/python3.8/site-packages/pl_bolts/callbacks/variational.py:9: UserWarning: You want to use `torchvision` which is not installed yet, install it with `pip install torchvision`.
  warn('You want to use `torchvision` which is not installed yet,'  # pragma: no-cover
/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv/lib/python3.8/site-packages/pl_bolts/callbacks/vision/image_generation.py:9: UserWarning: You want to use `torchvision` which is not installed yet, install it with `pip install torchvision`.
  warn('You want to use `torchvision` which is not installed yet,'  # pragma: no-cover
/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv/lib/python3.8/site-packages/pl_bolts/datamodules/binary_mnist_datamodule.py:12: UserWarning: You want to use `torchvision` which is not installed yet, install it with `pip install torchvision`.
  warn('You want to use `torchvision` which is not installed yet,'  # pragma: no-cover
/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv/lib/python3.8/site-packages/pl_bolts/datamodules/cifar10_dataset.py:13: UserWarning: You want to use `Pillow` which is not installed yet, install it with `pip install Pillow`.
  warn('You want to use `Pillow` which is not installed yet,'  # pragma: no-cover
/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv/lib/python3.8/site-packages/pl_bolts/transforms/dataset_normalizations.py:5: UserWarning: You want to use `torchvision` which is not installed yet, install it with `pip install torchvision`.
  warn('You want to use `torchvision` which is not installed yet,'  # pragma: no-cover
/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv/lib/python3.8/site-packages/pl_bolts/datamodules/cifar10_datamodule.py:17: UserWarning: You want to use `torchvision` which is not installed yet, install it with `pip install torchvision`.
  warn('You want to use `torchvision` which is not installed yet,'  # pragma: no-cover
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'SklearnDataModule' from 'pl_bolts.datamodules' (/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv/lib/python3.8/site-packages/pl_bolts/datamodules/__init__.py)

So I install torchvision (is it strictly necessary just for the SklearnModule?)

(venv) $ pip install torchvision 
(venv) $ python                 
>>> from pl_bolts.datamodules import SklearnDataModule

Error 2: This fails with:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'SklearnDataModule' from 'pl_bolts.datamodules' (/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv/lib/python3.8/site-packages/pl_bolts/datamodules/__init__.py)

Expected behavior

Import loads with no error

Environment

(venv) $ pip freeze
absl-py==0.11.0
cachetools==4.1.1
certifi==2020.11.8
chardet==3.0.4
dataclasses==0.6
fsspec==0.8.4
future==0.18.2
google-auth==1.23.0
google-auth-oauthlib==0.4.2
grpcio==1.33.2
idna==2.10
Markdown==3.3.3
numpy==1.19.4
oauthlib==3.1.0
Pillow==8.0.1
protobuf==3.14.0
pyasn1==0.4.8
pyasn1-modules==0.2.8
pytorch-lightning==1.0.7
pytorch-lightning-bolts==0.2.5
PyYAML==5.3.1
requests==2.25.0
requests-oauthlib==1.3.0
rsa==4.6
six==1.15.0
tensorboard==2.4.0
tensorboard-plugin-wit==1.7.0
torch==1.7.0
torchvision==0.8.1
tqdm==4.52.0
typing-extensions==3.7.4.3
urllib3==1.26.2
Werkzeug==1.0.1

Additional context

@plpxsk plpxsk added the help wanted Extra attention is needed label Nov 19, 2020
@akihironitta
Copy link
Contributor

@pavopax Thank you for reporting the issue! The latest version of Bolts should now work, so could you upgrade it and retry?
pip install git+https://github.com/PytorchLightning/pytorch-lightning-bolts.git@master --upgrade

@plpxsk
Copy link
Author

plpxsk commented Nov 19, 2020

Thanks. I installed this in my env but still get the error:

(venv) # python
Python 3.8.5 (default, Jul 21 2020, 10:48:26) 
[Clang 11.0.3 (clang-1103.0.32.62)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from pl_bolts.datamodules import SklearnDataModule
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'SklearnDataModule' from 'pl_bolts.datamodules' (/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv/lib/python3.8/site-packages/pl_bolts/datamodules/__init__.py)
>>> 
>>> import  pl_bolts
>>> pl_bolts.__version__
'0.2.5rc1'

Installation:

# source venv/bin/activate                                                                                                                
(venv) # pip install git+https://github.com/PytorchLightning/pytorch-lightning-bolts.git@master --upgrade                                 
Collecting git+https://github.com/PytorchLightning/pytorch-lightning-bolts.git@master
  Cloning https://github.com/PytorchLightning/pytorch-lightning-bolts.git (to revision master) to /private/var/folders/0t/y19n6dcs2p73124r243kg38m0000gn/T/pip-req-build-ty_gtb6s
  Running command git clone -q https://github.com/PytorchLightning/pytorch-lightning-bolts.git /private/var/folders/0t/y19n6dcs2p73124r243kg38m0000gn/T/pip-req-build-ty_gtb6s
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Requirement already satisfied, skipping upgrade: pytorch-lightning>=1.0 in ./venv/lib/python3.8/site-packages (from pytorch-lightning-bolts==0.2.5rc1) (1.0.7)
Requirement already satisfied, skipping upgrade: torch>=1.6 in ./venv/lib/python3.8/site-packages (from pytorch-lightning-bolts==0.2.5rc1) (1.7.0)
Requirement already satisfied, skipping upgrade: tqdm>=4.41.0 in ./venv/lib/python3.8/site-packages (from pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (4.52.0)
Requirement already satisfied, skipping upgrade: numpy>=1.16.4 in ./venv/lib/python3.8/site-packages (from pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (1.19.4)
Requirement already satisfied, skipping upgrade: tensorboard>=2.2.0 in ./venv/lib/python3.8/site-packages (from pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (2.4.0)
Requirement already satisfied, skipping upgrade: fsspec>=0.8.0 in ./venv/lib/python3.8/site-packages (from pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (0.8.4)
Requirement already satisfied, skipping upgrade: PyYAML>=5.1 in ./venv/lib/python3.8/site-packages (from pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (5.3.1)
Requirement already satisfied, skipping upgrade: future>=0.17.1 in ./venv/lib/python3.8/site-packages (from pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (0.18.2) 
Requirement already satisfied, skipping upgrade: typing-extensions in ./venv/lib/python3.8/site-packages (from torch>=1.6->pytorch-lightning-bolts==0.2.5rc1) (3.7.4.3)
Requirement already satisfied, skipping upgrade: dataclasses in ./venv/lib/python3.8/site-packages (from torch>=1.6->pytorch-lightning-bolts==0.2.5rc1) (0.6)
Requirement already satisfied, skipping upgrade: wheel>=0.26; python_version >= "3" in ./venv/lib/python3.8/site-packages (from tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (0.35.1)
Requirement already satisfied, skipping upgrade: setuptools>=41.0.0 in ./venv/lib/python3.8/site-packages (from tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (47.1.0)
Requirement already satisfied, skipping upgrade: werkzeug>=0.11.15 in ./venv/lib/python3.8/site-packages (from tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (1.0.1)
Requirement already satisfied, skipping upgrade: protobuf>=3.6.0 in ./venv/lib/python3.8/site-packages (from tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (3.14.0)
Requirement already satisfied, skipping upgrade: google-auth-oauthlib<0.5,>=0.4.1 in ./venv/lib/python3.8/site-packages (from tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (0.4.2)
Requirement already satisfied, skipping upgrade: requests<3,>=2.21.0 in ./venv/lib/python3.8/site-packages (from tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (2.25.0)
Requirement already satisfied, skipping upgrade: google-auth<2,>=1.6.3 in ./venv/lib/python3.8/site-packages (from tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (1.23.0)
Requirement already satisfied, skipping upgrade: six>=1.10.0 in ./venv/lib/python3.8/site-packages (from tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (1.15.0)
Requirement already satisfied, skipping upgrade: grpcio>=1.24.3 in ./venv/lib/python3.8/site-packages (from tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (1.33.2)
Requirement already satisfied, skipping upgrade: tensorboard-plugin-wit>=1.6.0 in ./venv/lib/python3.8/site-packages (from tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (1.7.0)
Requirement already satisfied, skipping upgrade: markdown>=2.6.8 in ./venv/lib/python3.8/site-packages (from tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (3.3.3)
Requirement already satisfied, skipping upgrade: absl-py>=0.4 in ./venv/lib/python3.8/site-packages (from tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (0.11.0)
Requirement already satisfied, skipping upgrade: requests-oauthlib>=0.7.0 in ./venv/lib/python3.8/site-packages (from google-auth-oauthlib<0.5,>=0.4.1->tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (1.3.0)
Requirement already satisfied, skipping upgrade: certifi>=2017.4.17 in ./venv/lib/python3.8/site-packages (from requests<3,>=2.21.0->tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (2020.11.8)
Requirement already satisfied, skipping upgrade: urllib3<1.27,>=1.21.1 in ./venv/lib/python3.8/site-packages (from requests<3,>=2.21.0->tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (1.26.2)
Requirement already satisfied, skipping upgrade: idna<3,>=2.5 in ./venv/lib/python3.8/site-packages (from requests<3,>=2.21.0->tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (2.10)
Requirement already satisfied, skipping upgrade: chardet<4,>=3.0.2 in ./venv/lib/python3.8/site-packages (from requests<3,>=2.21.0->tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (3.0.4)
Requirement already satisfied, skipping upgrade: pyasn1-modules>=0.2.1 in ./venv/lib/python3.8/site-packages (from google-auth<2,>=1.6.3->tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (0.2.8)
Requirement already satisfied, skipping upgrade: rsa<5,>=3.1.4; python_version >= "3.5" in ./venv/lib/python3.8/site-packages (from google-auth<2,>=1.6.3->tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (4.6)
Requirement already satisfied, skipping upgrade: cachetools<5.0,>=2.0.0 in ./venv/lib/python3.8/site-packages (from google-auth<2,>=1.6.3->tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (4.1.1)
Requirement already satisfied, skipping upgrade: oauthlib>=3.0.0 in ./venv/lib/python3.8/site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<0.5,>=0.4.1->tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (3.1.0)
Requirement already satisfied, skipping upgrade: pyasn1<0.5.0,>=0.4.6 in ./venv/lib/python3.8/site-packages (from pyasn1-modules>=0.2.1->google-auth<2,>=1.6.3->tensorboard>=2.2.0->pytorch-lightning>=1.0->pytorch-lightning-bolts==0.2.5rc1) (0.4.8)
Building wheels for collected packages: pytorch-lightning-bolts
  Building wheel for pytorch-lightning-bolts (PEP 517) ... done
  Created wheel for pytorch-lightning-bolts: filename=pytorch_lightning_bolts-0.2.5rc1-py3-none-any.whl size=215350 sha256=2b4f58a9e909bd7d3a0a2f4534c5ce5e0412cbb80982d322d9e9dfa6d25fca33
  Stored in directory: /private/var/folders/0t/y19n6dcs2p73124r243kg38m0000gn/T/pip-ephem-wheel-cache-rlfg1flb/wheels/a0/8e/a9/e17190e9fe447e4eb3bd8aec451f1979cd074c3445f21f7643
Successfully built pytorch-lightning-bolts
Installing collected packages: pytorch-lightning-bolts
  Attempting uninstall: pytorch-lightning-bolts
    Found existing installation: pytorch-lightning-bolts 0.2.5
    Uninstalling pytorch-lightning-bolts-0.2.5:
      Successfully uninstalled pytorch-lightning-bolts-0.2.5
Successfully installed pytorch-lightning-bolts-0.2.5rc1
WARNING: You are using pip version 20.1.1; however, version 20.2.4 is available.
You should consider upgrading via the '/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv/bin/python3 -m pip install --upgrade pip' command.

@plpxsk
Copy link
Author

plpxsk commented Nov 19, 2020

I tried a fresh install into another virtual env, and still fails:

(venv2) py# python
Python 3.8.5 (default, Jul 21 2020, 10:48:26) 
[Clang 11.0.3 (clang-1103.0.32.62)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from pl_bolts.datamodules import SklearnDataModule
/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv2/lib/python3.8/site-packages/pl_bolts/utils/warnings.py:25: UserWarning: You want to use `torchvision` which is not installed yet, install it with `pip install torchvision`.
  stdout_func(f'You want to use `{pkg_name}` which is not installed yet,'
/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv2/lib/python3.8/site-packages/pl_bolts/utils/warnings.py:25: UserWarning: You want to use `PIL` which is not installed yet, install it with `pip install Pillow`.
  stdout_func(f'You want to use `{pkg_name}` which is not installed yet,'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'SklearnDataModule' from 'pl_bolts.datamodules' (/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv2/lib/python3.8/site-packages/pl_bolts/datamodules/__init__.py)
>>> 

Here, torchvision and Pillow need to be installed, which I do. But still get error

(venv2) py# pip install torchvision
Collecting torchvision
  Using cached torchvision-0.8.1-cp38-cp38-macosx_10_9_x86_64.whl (1.0 MB)
Collecting pillow>=4.1.1
  Using cached Pillow-8.0.1-cp38-cp38-macosx_10_10_x86_64.whl (2.2 MB)
Requirement already satisfied: numpy in ./venv2/lib/python3.8/site-packages (from torchvision) (1.19.4)
Requirement already satisfied: torch==1.7.0 in ./venv2/lib/python3.8/site-packages (from torchvision) (1.7.0)
Requirement already satisfied: typing-extensions in ./venv2/lib/python3.8/site-packages (from torch==1.7.0->torchvision) (3.7.4.3)
Requirement already satisfied: future in ./venv2/lib/python3.8/site-packages (from torch==1.7.0->torchvision) (0.18.2)
Requirement already satisfied: dataclasses in ./venv2/lib/python3.8/site-packages (from torch==1.7.0->torchvision) (0.6)
Installing collected packages: pillow, torchvision
Successfully installed pillow-8.0.1 torchvision-0.8.1
(venv2) py# python                 
Python 3.8.5 (default, Jul 21 2020, 10:48:26) 
[Clang 11.0.3 (clang-1103.0.32.62)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from pl_bolts.datamodules import SklearnDataModule
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'SklearnDataModule' from 'pl_bolts.datamodules' (/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv2/lib/python3.8/site-packages/pl_bolts/datamodules/__init__.py)
>>> 
(venv2) py# pip install Pillow     
Requirement already satisfied: Pillow in ./venv2/lib/python3.8/site-packages (8.0.1)
(venv2) py# python                 
Python 3.8.5 (default, Jul 21 2020, 10:48:26) 
[Clang 11.0.3 (clang-1103.0.32.62)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from pl_bolts.datamodules import SklearnDataModule
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'SklearnDataModule' from 'pl_bolts.datamodules' (/Users/paczuskp/projects_gene/raan-lung-2020/code/py/venv2/lib/python3.8/site-packages/pl_bolts/datamodules/__init__.py)
>>> 

@akihironitta
Copy link
Contributor

@pavopax Thanks again for the detailed report. Let me dig into it...

@akihironitta
Copy link
Contributor

@pavopax Would you mind installing sklearn and retrying?

@plpxsk
Copy link
Author

plpxsk commented Nov 19, 2020

Thanks, yes it works now. I upgraded package to the GitHub version and also installed scikit-learn, and issue is resolved.

Please close as you see fit. Cheers 💯

@akihironitta
Copy link
Contributor

@pavopax :]

So I install torchvision (is it strictly necessary just for the SklearnModule?)
Here, torchvision and Pillow need to be installed, which I do. But still get error

Actually, you don't need either of them... You only need sklearn in your case. The current Bolts warns users of unavailable optional packages even when they actually don't need them installed, which can be improved...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants