Limitations

xlwings Lite is based on Pyodide, and comes with the following limitations:

  • Packages that depend on the multiprocessing or threading modules aren’t currently supported.

  • Some packages may need to be built specifically for Pyodide if they aren’t available yet and if they aren’t pure Python packages, see Creating a Pyodide package. For a list of “complex” packages that are available for Pyodide, see Packages built in Pyodide.

  • Web APIs: Often, you’ll run into CORS issues as the server needs to explicitly allow access via headers. GitHub works though so you can access files from there. Otherwise, you could use a CORS proxy (preferably owned by you) to work around this issue if you have no control over the web server, see Web API Requests

  • TCP/IP connections: TCP/IP connections aren’t supported, which means that you can’t directly connect to databases like PostgreSQL. SQLite, however, is supported, see Databases.

  • Memory: Pyodide can use up to 4 GB in total. A single NumPy array or pandas block (the columns of the same data type in a DataFrame) is limited to 2 GB, as WebAssembly is a 32-bit platform. Memory that Python has used once stays reserved until you restart xlwings Lite, but objects you free with del are reused within the session, so delete large intermediate results before creating new ones. Large reads temporarily need far more memory than the resulting array or DataFrame, so process very large ranges one block of rows at a time.

  • There is currently no debugger.

See the Pyodide docs for further details.