simpeg / simpegEM1D

Frequency and time domain EM forward modeling and inversion program
MIT License
18 stars 11 forks source link

BUG: empymod : cannot import name 'ffht' from 'empymod.transform' #45

Closed jc-barreto closed 4 years ago

jc-barreto commented 4 years ago

Hello,

I'm installing SimPEGEM1D on a different computer and I have to say, I have installed a few times, and is always different. I have it working in another machine, and I have tried to create an env with a requirements.txt file that I saved from the working machine(

conda create --name simpegem1d --file requirements.txt

) but didn't work since not all packages could be found in conda. image

So, I tried separately:

Here are the packages installed in two different machines, on the left doesn't work, on the right the one that runs fine.

image image image image

prisae commented 4 years ago

From your screenshot it looks like it almost found no packages on conda at all - I excpect you only use the default channel. Could you try it again by using the channel conda-forge?

The easiest is to run the following (straight from https://conda-forge.org/):

conda config --add channels conda-forge
conda config --set channel_priority strict

and then you should be able to do conda create --name simpegem1d --file requirements.txt this again - there might still be a few packages that are not on conda, you can then install them from pip.

If the resolve takes too long try it with mamba...

conda install mamba
mamba create --name simpegem1d --file requirements.txt

(mamba is a drop-in replacement for conda, providing, amongst other, a much faster resolve).

Let us know how you get on!

prisae commented 4 years ago

Ah, but there is one more issue. The master branch of simpegEM1D is updated for empymod v2, but all the releases are not. So if you use a release you have to use empymod<2.0.

It might be best to install simpegEM1D from the master branch, but I am not sure about that. @sgkang will tell you!

jc-barreto commented 4 years ago

Yeah...I tried with the conda forge and just 4 packages weren't there, so I deleted them from my requirement file. But now gives a lot of incompatibility between packages versions.

In this list, the order matters? Install EM1D Install SimPEG 13.1 Uninstall Scipy 1.5 Install Scipy 1.3 Uninstall empymod 2.0.3 Install empymod 2.0.2

image image image

jc-barreto commented 4 years ago

Hello,

After a few tests, I realized that this is the order to install:

Now, when I run, the error is no longer

cannot import name 'ffht' from 'empymod.transform'

but

ModuleNotFoundError: No module named 'SimPEG.Regularization' image

I have run a notebook in this env with SimPEG 0.13.1 and works fine. Only SimPEGEM1D can't find this module.

prisae commented 4 years ago

This issue was fixed in simpegEM1D v0.0.17: https://github.com/simpeg/simpegEM1D/releases/tag/0.0.17

However, v0.0.17 does not seem to be on PyPi, but v0.0.17b0 and v0.0.18a0, so there seems to be something weird with the PyPi deployment.

Try this:

pip install simpegEM1D==v0.0.18a0

Then you will also need empymod>=2, so no need to uninstall empymod and install an older version.

There work underway to implement simpegEM1D into SimPEG, which will make this process easier in the future!

prisae commented 4 years ago

Correction, you will still need empymod<2.

As I said earlier, I would just install from master:

pip install git+https://github.com/simpeg/simpegEM1D@master

then these issues should be gone.

jc-barreto commented 4 years ago

@prisae Yeah, you're right, the way to make this works is only by git. I've installed in few minutes in 2 computers, Thank you. At least now I know, next time I won't try by PyPi :)