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

pyod fails to install using pip #6

Closed
mdlockyer opened this issue Jun 12, 2018 · 18 comments
Closed

pyod fails to install using pip #6

mdlockyer opened this issue Jun 12, 2018 · 18 comments
Labels

Comments

@mdlockyer
Copy link

mdlockyer commented Jun 12, 2018

When attempting to install without nose, I receive the following error:

(PyVi) Michael:PyVi michael$ pip install pyod
Collecting pyod==0.5.0 (from -r requirements.txt (line 18))
  Using cached https://files.pythonhosted.org/packages/c9/8c/6774fa2e7ae6fe9c2c648114d15ba584f950002377480e14183a0999af30/pyod-0.5.0.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/setup.py", line 2, in <module>
        from pyod import __version__
      File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/pyod/__init__.py", line 4, in <module>
        from . import models
      File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/pyod/models/__init__.py", line 2, in <module>
        from .abod import ABOD
      File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/pyod/models/abod.py", line 17, in <module>
        from .base import BaseDetector
      File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/pyod/models/base.py", line 27, in <module>
        from ..utils.utility import precision_n_scores
      File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/pyod/utils/__init__.py", line 2, in <module>
        from .utility import check_parameter
      File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/pyod/utils/utility.py", line 18, in <module>
        from sklearn.utils.testing import assert_equal
      File "/Users/michael/anaconda3/envs/PyVi/lib/python3.6/site-packages/sklearn/utils/testing.py", line 49, in <module>
        from nose.tools import raises
    ModuleNotFoundError: No module named 'nose'
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-gjdzzane/pyod/
@mdlockyer mdlockyer changed the title prod fails to install using pip pyod fails to install using pip Jun 12, 2018
@mdlockyer
Copy link
Author

Also have the same issue when installing from source

@mdlockyer
Copy link
Author

mdlockyer commented Jun 12, 2018

Should also note that I'm attempting to install into an Anaconda environment running Python 3.6.5

@yzhao062
Copy link
Owner

Thanks for the feedback. I included the test files in the package which triggers "nose", even it is only listed as optional. I will submit a fix (possibly tonight) to remove test files in the package. Will comment again once that is ready. Yue

@mdlockyer
Copy link
Author

Sounds good!

@yzhao062
Copy link
Owner

Sorry I just noticed that another problem is pyod depends on sklearn...which uses nose for validation, see error message below.
If possible, I would suggest installing nose (by either pip install nose or use Requirments.txt). I will need to double check sklearn dependency, which may not be possible to fix from my end. If that is the case, I will have change 'nose' from optional to required...

    from sklearn.utils.testing import assert_equal
  File "/Users/michael/anaconda3/envs/PyVi/lib/python3.6/site-packages/sklearn/utils/testing.py", line 49, in <module>
    from nose.tools import raises

@mdlockyer
Copy link
Author

mdlockyer commented Jun 12, 2018

Tried installing nose then installing Pyod. I get an issue here that comes from matplotlib. It's an Anaconda (or venv I assume) specific error because matplotlib wants python installed as a framework. It seems like at the moment Pyod won't work in an Anaconda env. Possibly something for a future version as I would assume a lot of people working with data science/ statistics would use Anaconda.

here is the backtrace for reference:

(PyVi) Michael:PyVi michael$ pip install pyod
Collecting pyod
  Using cached https://files.pythonhosted.org/packages/c9/8c/6774fa2e7ae6fe9c2c648114d15ba584f950002377480e14183a0999af30/pyod-0.5.0.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-7z8033c1/pyod/setup.py", line 2, in <module>
        from pyod import __version__
      File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-7z8033c1/pyod/pyod/__init__.py", line 4, in <module>
        from . import models
      File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-7z8033c1/pyod/pyod/models/__init__.py", line 2, in <module>
        from .abod import ABOD
      File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-7z8033c1/pyod/pyod/models/abod.py", line 17, in <module>
        from .base import BaseDetector
      File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-7z8033c1/pyod/pyod/models/base.py", line 27, in <module>
        from ..utils.utility import precision_n_scores
      File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-7z8033c1/pyod/pyod/utils/__init__.py", line 9, in <module>
        from .data import generate_data
      File "/private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-7z8033c1/pyod/pyod/utils/data.py", line 16, in <module>
        import matplotlib.pyplot as plt
      File "/Users/michael/anaconda3/envs/PyVi/lib/python3.6/site-packages/matplotlib/pyplot.py", line 115, in <module>
        _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
      File "/Users/michael/anaconda3/envs/PyVi/lib/python3.6/site-packages/matplotlib/backends/__init__.py", line 62, in pylab_setup
        [backend_name], 0)
      File "/Users/michael/anaconda3/envs/PyVi/lib/python3.6/site-packages/matplotlib/backends/backend_macosx.py", line 17, in <module>
        from matplotlib.backends import _macosx
    RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are using (Ana)Conda please install python.app and replace the use of 'python' with 'pythonw'. See 'Working with Matplotlib on OSX' in the Matplotlib FAQ for more information.
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/j4/_68f6f3j4d51_2smq2mh5hyh0000gn/T/pip-install-7z8033c1/pyod/

@yzhao062
Copy link
Owner

yzhao062 commented Jun 13, 2018

The issue you saw is specific to the virtual env Qt problem on mac, which is caused by matplotlib, and it is a lingering issue. The problem can be reproduced by:
import matplotlib.pyplot as plt
It throws error if you install the matplotlib with pip command in a mac conda virtual env... There are several fixes though.

Using workaround 1, I managed to install pyod in mac virtual env and also succeeded in running examples. See the screenshot below:

snip20180612_1

To facilitate the installation, I also removed the use of matplotlib in the code (I do not remove it from dependency since example codes still need it) and publish a new version 0.5.2. You may want to give it a shot...

Let me know if the problem persists.

@yzhao062 yzhao062 added the bug label Jun 13, 2018
@tomron
Copy link

tomron commented Jun 21, 2018

I think that similar solution to this can solve the first issue - sciunto-org/python-bibtexparser#111 (I can create a PR with this solution if you would like)

@yzhao062
Copy link
Owner

@tomron Thanks Tom. I did check the post and it is an interesting bug :)
The pip install issue in pyod is because I used a function "sklearn.utils.testing.assert_equal", which depends on nose.tools. Even I listed sklearn in requirements.txt, it still requires nose to be installed, which should have been installed because sklearn depends on nose. This bug would happen if a person installs sklearn first and then uninstalls nose. The requirement of sklearn is fulfilled but nose is not there.

So I fixed this bug by listing nose as one of the requirements in requirements.txt. Not sure if this is exactly the same bug you mentioned.

@tomron
Copy link

tomron commented Jun 21, 2018

This issue is actually a mixture of several issues which should probably be separated to several issues.

As a user of your package I don't want to pre install myself any dependency I want the setup file to do that.
When you import pyod in the setup file it calls the init file which imports other files and if the required packages are not present it will fail. The fix I suggested will fix this issue (I also suggest to fix the dependencies' versions, some dependencies miss the version)

@yzhao062
Copy link
Owner

#12 should fix the setup.py dependency issue. #

@Hasakii-ghj
Copy link

I received an error when i exported the pyod.models.hbos however i have successfully installed pyod in ananconda environment ,the error shows like 'No module named 'pyod.models'; 'pyod' is not a package'

@yzhao062
Copy link
Owner

@dksajgfaigfkja It should be working. I just tested it under Python 2.7 and Python 3.7 by initializing new env with conda. The command I used is:

conda create -n newenv python=2.7
conda activate newenv
pip install pyod
pip list <- make sure pyod is installed
image
python hbos_example.py

Thoughts:

  • make sure env is correct
  • use pip list to see whether pyod is installed
  • reactivate the env if needed

@Lotus-Lian
Copy link

@Hasakii-ghj I have the same problems. Did you solve this problem? Would you mind giving me some suggestions about this? Thank you so much.

@yzhao062
Copy link
Owner

@Lotus-Lian maybe try conda install? https://anaconda.org/conda-forge/pyod

@LLh-lihan
Copy link

@yzhao062 Thank you for your suggestion. But I used conda install. But it doesn't work.

@Trolexum
Copy link

Trolexum commented Apr 2, 2021

@LLh-lihan, @Lotus-Lian: What is the name of your python file? If it is 'pyod.py', rename it. In this case you are importing your own script.

@chanduthedev
Copy link

Make sure that python file name is not pyod.py. if package name and file name are same, will face this kind of error.

yzhao062 pushed a commit that referenced this issue Apr 23, 2022
add test script for sampling method.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

8 participants