pymor / pymor-deal.II

minimal deal.II python bindings for usage with pymor (http://pymor.org/)
BSD 2-Clause "Simplified" License
10 stars 4 forks source link

Installation fails using the README instructions #18

Open davidscn opened 2 years ago

davidscn commented 2 years ago

After updating my deal.II version I needed to update the bindings as well. Thus, I updated the bindings to the latest state and followed the newly added steps in the README.

However, I faced two issues (one maybe already beforehand). First of all, the bindings fail to find my system's deal.II, even when modifying the environment variables as given by the generated cmake error. Second, the installation process finishes (at least according to python), but the generated module (pymor_dealii) cannot be loaded afterwards. I went back to the setup.py installation procedure in some previous bindings version in order to make it work.

renefritze commented 2 years ago

Which deal.II version did you update to? python -m pip install -e . is supposed to fail if it doesn't find deal.II, but it ran "successfully" as in with a 0 exit for you? Do you get an error import that's not just ModuleNotFound?

davidscn commented 2 years ago

This was a recent develop version of deal.II (deal.II 10-pre), but I would be surprised if the deal.II version is somehow related to this.

python -m pip install -e . is supposed to fail if it doesn't find deal.II, but it ran "successfully" as in with a 0 exit for you?

Makes sense. I was not able to convince cmake (or python) where to find my deal.II (although I set the environment variable and I set the CMAKE_PREFIX_PATH). After some trial and error and manually configured the CMakeCache so that it spots the deal.II installation correctly. Then, the installation runs through, but I couldn't use the module.

I will investigate the error message later on again and provide some more details.

renefritze commented 2 years ago

This was a recent develop version of deal.II (deal.II 10-pre)

Even if your problem isn't due to changes in deal.II, it would be great to have an automatic early warning CI test against the development branch. This would require some real effort however, since we rely on the pyMOR CI container images here, were the release version of deal.II is baked in.

although I set the environment variable

If you're referring to the hints used here you'd have to pass values for those to cmake via -DVARIABLE_NAME=VALUE. They're not automatically reflected from the env. Which would be a good addition though, either way. Like this.

davidscn commented 2 years ago

If you're referring to the hints used here you'd have to pass values for those to cmake via -DVARIABLE_NAME=VALUE

CMake is handled by python, right? I guess it would be a good idea to add environment variables as hints as well.

However, python3 setup.py install works flawlessly whereas python -m pip install -e . fails and I don't really get the reasoning.

renefritze commented 2 years ago

I guess it would be a good idea to add environment variables as hints as well.

Agreed

Could you attach two full console logs of both install methods maybe?

davidscn commented 2 years ago

You don't see the irrelevant compiler output of the setup log since it was already compiled..

pip-command.log setup.log

renefritze commented 2 years ago

pip.txt

Alright, I think I managed to get not the same, but probably a related error.

Can you confirm that a "normal" install without the editable flag works for you? So python -m pip install .?

davidscn commented 2 years ago

I cannot confirm that this works for me.

python -m pip install . > pip.log

The issue is different, though. Using this command, it seems that deal.II cannot be located. However, I set DEAL_II_DIR globally using an environment variable as recommended by deal.II in general. The setup.py version seems to handle this in the correct way.