OpenWaterAnalytics / epanet-python

python wrapper for epanet library
76 stars 40 forks source link

Errors in CMakeLists.txt when building epanet-python package #73

Open LittleZi opened 3 years ago

LittleZi commented 3 years ago

I am trying to build epanet-python package on my computer. After running the code: python3 setup.py sdist bdist_wheel, it returned the cmake error at CMakeLists.txt. The cmake error I encoutered is specified below:

CMake Error at CMakeLists.txt:38 (ADD_SUBDIRECTORY):
  The source directory

    C:/Users/Ziyuan/AppData/Local/Programs/Python/Python37/Lib/site-packages/owa-epanet/EPANET

  does not contain a CMakeLists.txt file.

Appreicate a lot if any advices!

samhatchett commented 3 years ago

It looks like you are trying to build the wrapper from a clone of the repository. CMake cannot find EPANET because it is linked as a git submodule.

Assuming this is the case, please use the instructions provided: https://github.com/OpenWaterAnalytics/epanet-python/tree/dev/owa-epanet -- you will find notes there about initializing the EPANET submodule.

LittleZi commented 3 years ago

Thanks for your replying!

What I did is shown below:

C:\Users\Ziyuan\AppData\Local\Programs\Python\Python37\Lib\site-packages\owa-epanet>cd EPANET

C:\Users\Ziyuan\AppData\Local\Programs\Python\Python37\Lib\site-packages\owa-epanet\EPANET>git init
Reinitialized existing Git repository in C:/Users/Ziyuan/AppData/Local/Programs/Python/Python37/Lib/site-packages/owa-epanet/EPANET/.git/

C:\Users\Ziyuan\AppData\Local\Programs\Python\Python37\Lib\site-packages\owa-epanet\EPANET>git submodule update --init

C:\Users\Ziyuan\AppData\Local\Programs\Python\Python37\Lib\site-packages\owa-epanet\EPANET>cd ..

C:\Users\Ziyuan\AppData\Local\Programs\Python\Python37\Lib\site-packages\owa-epanet>python setup.py sdist bdist_wheel

Is it correct? But it still returned the same cmake error, I still feel confused about this issue.

samhatchett commented 3 years ago

you must run the git submodule update --init command from the base repo directory, not from inside EPANET directory.

LittleZi commented 3 years ago

Thanks for you replying again! Do you mean like this shown below?

C:\>cd epanet-python

C:\epanet-python>cd epanet-python-dev

C:\epanet-python\epanet-python-dev>cd owa-epanet

C:\epanet-python\epanet-python-dev\owa-epanet>git init
Reinitialized existing Git repository in C:/epanet-python/epanet-python-dev/owa-epanet/.git/

C:\epanet-python\epanet-python-dev\owa-epanet>git submodule update --init

C:\epanet-python\epanet-python-dev\owa-epanet>python setup.py sdist bdist_wheel

But finally, I still got the same error.

samhatchett commented 3 years ago

I think the git init command is resetting the repository and causing you to lose the submodule. The instructions provided do not suggest reinitializing the base repo, so try re-cloning the repo and following the instructions again.

LittleZi commented 3 years ago

Thanks for your patience! I am new to python. This time I did not run git init first.

C:\epanet-python\epanet-python-dev>cd owa-epanet

C:\epanet-python\epanet-python-dev\owa-epanet>git submodule update --init

C:\epanet-python\epanet-python-dev\owa-epanet>python setup.py sdist bdist_wheel

I am confused that it still returned the same cmake error.

samhatchett commented 3 years ago

What overall are you trying to accomplish? If it is just to use the wrapper, then a simple install via pypi should work (assuming you have the proper build tools). If you are trying to learn about and/or improve how the wrapper works, then cloning this repo and approaching it this way would work better.

assuming you want to get into the wrapper's internals, please provide more history of commands - did you download the repository, or clone it? what exactly is the git/console response to the commands?

LittleZi commented 3 years ago

I downloaded the repository and followed the instructions to build the epanet-python-packages, because I want to get coordinates of nodes in a water distribution network using this package.

LittleZi commented 3 years ago

Thank you very much! I have fixed the cmake error I encountered after running the code: python3 setup.py sdist bdist_wheel. And now, I changed directory into test folder, and ran the code: pipenv install ../dist/*.whl, an new error emerged shown below:

C:\Users\Ziyuan\epanet-python\epanet-python\owa-epanet\test>pipenv install ../dist/*.whl
Installing ../dist/*.whl...
Traceback (most recent call last):
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\site-packages\pkg_resources\_vendor\packaging\requirements.py", line 98, in __init__
    req = REQUIREMENT.parseString(requirement_string)
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\site-packages\pkg_resources\_vendor\pyparsing.py", line 1654, in parseString
    raise exc
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\site-packages\pkg_resources\_vendor\pyparsing.py", line 1644, in parseString
    loc, tokens = self._parse( instring, 0 )
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\site-packages\pkg_resources\_vendor\pyparsing.py", line 1402, in _parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\site-packages\pkg_resources\_vendor\pyparsing.py", line 3417, in parseImpl
    loc, exprtokens = e._parse( instring, loc, doActions )
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\site-packages\pkg_resources\_vendor\pyparsing.py", line 1402, in _parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\site-packages\pkg_resources\_vendor\pyparsing.py", line 3739, in parseImpl
    return self.expr._parse( instring, loc, doActions, callPreParse=False )
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\site-packages\pkg_resources\_vendor\pyparsing.py", line 1402, in _parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\site-packages\pkg_resources\_vendor\pyparsing.py", line 3400, in parseImpl
    loc, resultlist = self.exprs[0]._parse( instring, loc, doActions, callPreParse=False )
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\site-packages\pkg_resources\_vendor\pyparsing.py", line 1406, in _parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\site-packages\pkg_resources\_vendor\pyparsing.py", line 2711, in parseImpl
    raise ParseException(instring, loc, self.errmsg, self)
pkg_resources._vendor.pyparsing.ParseException: Expected W:(abcd...) (at char 0), (line:1, col:1)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\vendor\requirementslib\models\requirements.py", line 966, in _parse_name_from_line
    self._requirement = init_requirement(self.line)
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\vendor\requirementslib\models\utils.py", line 200, in init_requirement
    req = Requirement.parse(name)
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\site-packages\pkg_resources\__init__.py", line 3139, in parse
    req, = parse_requirements(s)
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\site-packages\pkg_resources\__init__.py", line 3084, in parse_requirements
    yield Requirement(line)
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\site-packages\pkg_resources\__init__.py", line 3094, in __init__
    super(Requirement, self).__init__(requirement_string)
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\site-packages\pkg_resources\_vendor\packaging\requirements.py", line 102, in __init__
    requirement_string[e.loc : e.loc + 8], e.msg
pkg_resources.extern.packaging.requirements.InvalidRequirement: Parse error at "'../dist/'": Expected W:(abcd...)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\users\ziyuan\appdata\local\programs\python\python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\Scripts\pipenv.exe\__main__.py", line 7, in <module>
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\vendor\click\core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\vendor\click\core.py", line 782, in main
    rv = self.invoke(ctx)
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\vendor\click\core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\vendor\click\core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\vendor\click\core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\vendor\click\decorators.py", line 73, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\vendor\click\core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\vendor\click\decorators.py", line 21, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\cli\command.py", line 253, in install
    site_packages=state.site_packages
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\core.py", line 2100, in do_install
    pkg_requirement = Requirement.from_line(pkg_line)
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\vendor\requirementslib\models\requirements.py", line 2676, in from_line
    parsed_line = Line(line)
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\vendor\requirementslib\models\requirements.py", line 171, in __init__
    self.parse()
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\vendor\requirementslib\models\requirements.py", line 1304, in parse
    self.parse_name()
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\vendor\requirementslib\models\requirements.py", line 1027, in parse_name
    name = self._parse_name_from_line()
  File "C:\Users\Ziyuan\AppData\Roaming\Python\Python37\site-packages\pipenv\vendor\requirementslib\models\requirements.py", line 969, in _parse_name_from_line
    "Failed parsing requirement from {0!r}".format(self.line)
pipenv.vendor.requirementslib.exceptions.RequirementError: Failed parsing requirement from '../dist/*.whl'

Could you please give me some ideas about how to fix this issue? I have no ideas about it. Thanks a lot in advance!

samhatchett commented 3 years ago

should probably establish whether pipenv works properly on your system first, without trying to install the epanet wrapper. This looks like a pipenv problem.

samhatchett commented 3 years ago

I'm thinking this is fixed? I think you've opened some threads on the OWA forum - apologies if I am mistaken