opengeos / whitebox-python

WhiteboxTools Python Frontend
https://pypi.org/project/whitebox/
MIT License
379 stars 68 forks source link

Unable to instance WhiteBoxTools in 2.3.1 #63

Closed fragalfernando closed 5 months ago

fragalfernando commented 5 months ago

Starting from yesterday I am unable to create instances of WhiteBoxTools in Python 3. I get this error:

FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/lib/python3.8/dist-packages/whitebox/WBT/img'

It looks like something related to this package:

WhiteboxTools_linux_amd64.zip

root@bdfd55668517:/src# python3
Python 3.8.10 (default, Mar 13 2023, 10:26:41) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from whitebox import WhiteboxTools
>>> wbt = WhiteboxTools()
Downloading WhiteboxTools pre-compiled binary for first time use ...
Decompressing WhiteboxTools_linux_amd64.zip ...
WhiteboxTools package directory: /usr/local/lib/python3.8/dist-packages/whitebox
Unexpected error: <class 'FileNotFoundError'>
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.8/dist-packages/whitebox/whitebox_tools.py", line 278, in __init__
    download_wbt()
  File "/usr/local/lib/python3.8/dist-packages/whitebox/whitebox_tools.py", line 157, in download_wbt
    shutil.copytree(init_img_dir, new_img_dir)
  File "/usr/lib/python3.8/shutil.py", line 555, in copytree
    with os.scandir(src) as itr:
FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/lib/python3.8/dist-packages/whitebox/WBT/img'

Thanks!

markwang0 commented 5 months ago

I have the same error with a python environment I created today. It is v2.3.1 and on macOS

>>> from whitebox.whitebox_tools import WhiteboxTools
>>> wbt = WhiteboxTools()
Downloading WhiteboxTools pre-compiled binary for first time use ...
Decompressing WhiteboxTools_darwin_amd64.zip ...
WhiteboxTools package directory: /Users/markwang/micromamba/envs/pygeoflood-hlm-env/lib/python3.11/site-packages/whitebox
Unexpected error: <class 'FileNotFoundError'>
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/markwang/micromamba/envs/pygeoflood-hlm-env/lib/python3.11/site-packages/whitebox/whitebox_tools.py", line 278, in __init__
    download_wbt()
  File "/Users/markwang/micromamba/envs/pygeoflood-hlm-env/lib/python3.11/site-packages/whitebox/whitebox_tools.py", line 157, in download_wbt
    shutil.copytree(init_img_dir, new_img_dir)
  File "/Users/markwang/micromamba/envs/pygeoflood-hlm-env/lib/python3.11/shutil.py", line 571, in copytree
    with os.scandir(src) as itr:
         ^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/Users/markwang/micromamba/envs/pygeoflood-hlm-env/lib/python3.11/site-packages/whitebox/WBT/img'

Also, the error doesn't happen when I use a conda environment created 2 weeks ago (also v2.3.1). Thank you!

ekimd commented 5 months ago

Same here, starting yesterday.

giswqs commented 5 months ago

Thank you for reporting. I will try to update it tonight

jblindsay commented 5 months ago

That' my bad, @giswqs I should have told you that we were planning a release of the backend. There are just so many moving parts in releasing a new version of WbT, which is one of the reasons why it's been so darn long.

giswqs commented 5 months ago

No problem, @jblindsay! Already great to see new WBT releases! Thank you for your great work.

I looked into the issue and I think the problem is because the file strcuture of WBT binaries have changed. The WBT directory used to be under the root directory, but now WBT is a subdirectory udner something like WhiteboxTools_linux_amd64, depending on the operating systems. I will update the automated routine to use the new file structure.

v2.3.0 image

v2.4.0 image

jblindsay commented 5 months ago

Ah yes, this is certainly a change that I made recently and didn't think about the consequences for the frontends. This is the result of significant changes to the build script and the fact that we are now compiling to our targets using Github Actions.

giswqs commented 5 months ago

I just released v2.3.2, which should resolve the issue. If everything works well, I can update the version to v2.4.0, the same as the WBT backend version.

ekimd commented 5 months ago

I got the same error with v2.3.2

/root/python3.11/lib/python3.11/site-packages/whitebox/download_wbt.py:18: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
  import pkg_resources
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/root/python3.11/lib/python3.11/site-packages/whitebox/download_wbt.py", line 222, in <module>
    download_wbt()
  File "/root/python3.11/lib/python3.11/site-packages/whitebox/download_wbt.py", line 145, in download_wbt
    shutil.copytree(init_img_dir, new_img_dir)
  File "/usr/lib/python3.11/shutil.py", line 558, in copytree
    with os.scandir(src) as itr:
         ^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/root/python3.11/lib/python3.11/site-packages/whitebox/WBT/img'
giswqs commented 5 months ago

Interesting! It passed the GitHub Actions. Will look into it again

jblindsay commented 5 months ago

We're hoping that this will greatly simplify the process of releasing new versions.

giswqs commented 5 months ago

Try v2.3.3. It should be fixed now. #65

ekimd commented 5 months ago

It works--thank you so much! Your fast response time is amazing!

giswqs commented 5 months ago

Great to hear that it is working now. Closing this issue for now.