# Included packages

Your installation of Spotfire includes version 3.12.9 of the Python interpreter and several packages it needs to run under Spotfire.

Important: The packages listed in this table are required for the Spotfire Service for Python and the Python interpreter to work together. Removing any of these packages can cause your Spotfire Service for Python data functions to fail.

If you create and distribute an SPK containing a different Python interpreter, and the interpreter specifies different packages or package versions than those listed here, your data functions could fail to work as expected. Python package authors strive for backward compatibility, but if you encounter such an issue, Spotfire Support can help you.

To help protect against this sort of issue, your distribution of the Spotfire Service for Python includes the PIP constraints file interpreter-contraints.txt. If you create an SPK for distribution that contains a different version of the Python interpreter, specify the `--constraints` option. Any dependency on an included package is "constrained" and the included version is used instead.

See Creating a Spotfire package for an alternative Python interpreter (for Windows) for an example of using the constraints file.

Package name | Version | Description | More information
--- | --- | --- | ---
numpy * | 2.2.4 | Provides the following. An N-dimensional array object. Broadcasting functions. Tools for integrating C/C++ and Fortran code. Linear algebra, Fourier transform, and random number capabilities. Note: NumPy version 1.19.4 has known incompatibilities when it is run on certain more recent versions of Windows. These compatibilities can cause Python to fail when it is used with Spotfire. If you build custom packages SPK on Windows, ensure the SPK does not include NumPy version 1.19.4. Note: Starting in NumPy version 2.0.0, operations involving NumPy arrays and Python scalars now follow stricter and more predictable promotion rules, as described in NEP 50 – Promotion rules for Python scalars. This means that Python data function authors must check and adjust any Python data functions using scalars to make sure they follow the Python scalar promotion rules. | https://pypi.org/project/numpy/2.2.4/
packaging | 24.2 | Provides support for parsing and handling Python package versioning, dependency specifications, and other metadata related to Python packaging. | https://pypi.org/project/packaging/24.2/
pandas * | 2.2.3 | Provides data structures and data analysis tools for dealing with tabular data, ordered and unordered time series data, matrix data, and other types of data sets. | https://pypi.org/project/pandas/2.2.3/
pip | 25.0.1 | Provides support for installing packages. | https://pypi.org/project/pip/25.0.1/
python-dateutil | 2.9.0.post0 | Provides extensions to the datetime module in Python. | https://pypi.org/project/python-dateutil/2.9.0.post0/
pytz | 2025.2 | Provides a platform for cross-platform time zone calculations. | https://pypi.org/project/pytz/2025.2/
setuptools | 78.1.0 | Provides tools for building, installing, upgrading, and uninstalling Python packages. | https://pypi.org/project/setuptools/78.1.0/
six | 1.17.0 | Provides utility functions for smoothing over the differences between the Python versions 2 and 3. | https://pypi.org/project/six/1.17.0/
- spotfire | 2.3.0 | Provides functions for integrating Python with Spotfire. Note: In spotfire version 2.2.0 (and later), the following changes were made: Export of geographic data (for example, GeoDataFrame objects from the geopandas package) from Python back into Spotfire now performs less processing. The export process will no longer create (or recreate) the XMin, XMax, XCenter, YMin, YMax, and YCenter columns and most of the additional table and column properties. If these columns are required, or you are creating a geocoding table, you can use the new public function `set_geocoding_table`:
      import spotfire
      import geopandas as gpd

      geodata = gpd.GeoDataFrame(...)
      spotfire.set_geocoding_table(geodata)
- Information about a data function's configured inputs and outputs have now been made available to a data function at execution time. The global variables "spotfire_inputs" and "spotfire_outputs" now contain read-only sequences of objects which describe each input or output (modifying the contents of these variables will not change the behavior of Spotfire; the objects themselves only have read-only properties). For example:
      out = {'Kind': [], 'Name': [], 'Type': []}
      for i in spotfire_inputs:
          out['Kind'].append("input")
          out['Name'].append(i.name)
          out['Type'].append(i.type)
      for o in spotfire_outputs:
          out['Kind'].append("output")
          out['Name'].append(o.name)
          out['Type'].append("unknown")
A new module (spotfire.support) has been added to the spotfire package, which gathers information about your Python execution environment and puts it into a troubleshooting bundle for sharing with Spotfire Support. You might be asked to generate such a bundle if you open a case involving Python data functions with Spotfire Support; they will provide you with the proper Python code for your environment | https://pypi.org/project/spotfire/2.3.0
tzdata | 2025.2 | Provides zic-compiled binaries for the IANA time zone database, intended to be a fallback for systems that do not have system time zone data installed (or do not have it installed in a standard location). | https://pypi.org/project/tzdata/2025.2/
wheel | 0.45.1 | The reference implementation of the Python wheel packaging standard, as defined in PEP 427. | https://pypi.org/project/wheel/0.45.1/

Note: * Exporting an SBDF that contains empty String columns causes an error with pandas and numpy. See Troubleshooting the service for more information.