mortada / fredapi

Python API for FRED (Federal Reserve Economic Data) and ALFRED (Archival FRED)
Apache License 2.0
930 stars 160 forks source link

Install in virtualenv fails if pandas is not installed #20

Closed jbrockmendel closed 7 years ago

jbrockmendel commented 7 years ago

Putting both pandas and fredapi in a "requirements.txt" file and then installing in a fresh virtualenv leads to:

Collecting fredapi (from -r requirements.txt (line 15))
  Using cached fredapi-0.4.0.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-ej66i5se/fredapi/setup.py", line 3, in <module>
        from fredapi.version import version as __version__
      File "/tmp/pip-build-ej66i5se/fredapi/fredapi/__init__.py", line 3, in <module>
        from fredapi.fred import Fred
      File "/tmp/pip-build-ej66i5se/fredapi/fredapi/fred.py", line 14, in <module>
        import pandas as pd
    ImportError: No module named 'pandas'

Can the version.py file go outside the fredapi directory?

sandrotosi commented 7 years ago

yes please fix this! reason is that fredapi.init has from fredapi.fred import Fred which means fred needs to be importable, which is not since pandas is not available.

i think several other projects solve the same situation in a way that allows setup.py to get the project's version without requiring for the whole module to be importable at such an early stage of the virtualenv creation

mortada commented 7 years ago

thanks for reporting this, I don't use virtualenv so didn't realize this problem, I think the problem is that setup.py is importing fredapi.version.py which in turn loads fredapi/__init__.py and that leads to the dependency requirement.

I will push a fix today

mortada commented 7 years ago

Please check if the latest release 0.4.1 https://github.com/mortada/fredapi/releases/tag/v0.4.1 fixes this issue for you. Thanks!

sandrotosi commented 7 years ago

yup that worked just fine, thanks!!!