ibis-project / ibis

the portable Python dataframe library
https://ibis-project.org
Apache License 2.0
5.02k stars 585 forks source link

NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:duckdb #4558

Closed djouallah closed 1 year ago

djouallah commented 1 year ago

first time trying ibis, using windows 10 and ibis 3.2

import ibis
con = ibis.duckdb.connect()  # in-memory database
con.list_tables()

I get the error in the title. I got confused, although duckdb is the default back-end, it has to be installed separately

cpcloud commented 1 year ago

@djouallah Thanks for opening an issue.

Yes, duckdb is the default backend for in-memory operations, however it's still an optional dependency (an extra in setuptools lingo).

Check out the DuckDB backend installation docs to learn how to do that!

cpcloud commented 1 year ago

I'm going to close this out! Please open a new issue if you get the same error after taking the appropriate installation steps.

rpmeira commented 1 year ago

Hi, I have the same error here, even though I have duckdb installed. I can run, for example, the code below without any errors:

import duckdb
c = duckdb.connect()
print(c.execute("SELECT 42").fetchall())

It prints [(42,)]

But if I try to run the code below I get the NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:duckdb error:

import ibis
con = ibis.duckdb.connect() 
con.list_tables()

What am I missing here?

lostmygithubaccount commented 1 year ago

Hi @rpmeira, which version of Ibis are you running? And can you confirm how you installed?

pip list | grep ibis

The latest release is 5.1.0 and I'm not seeing this issue. You may need to pip install 'ibis-framework[duckdb]' per the conversation above. See https://ibis-project.org/backends/duckdb/#install for other options.

(As a side note, looks like the redirect from https://ibis-project.org/docs/3.2.0/backends/DuckDB/#install is broken, I think as a result of my recent PR.)

rpmeira commented 1 year ago

Hi @lostmygithubaccount. I was running version 5.1.0, but I had it installed with pip install 'ibis-framework[sqlite]', as I was testing it with sqlite before. I didn't know I had to pip install it with every backend I wanted to use. I tought I just needed to install the actual backend package after the ibis was installed.

Now that I've installed with pip install 'ibis-framework[sqlite]' its wotking. Thank you for the quick reply!

lostmygithubaccount commented 1 year ago

Glad you got it working! Feel free to open an issue or discussion if you have any more issues or questions.