Disutils error/ No module found. New to streamlit and cant deploy a simple app!

If you’re creating a debugging post, please include the following info:

  1. https://employee-attrition-salary-jjoqoqqi9glfy5agycb8bq.streamlit.app/
  2. GitHub - joeATX/Employee-Attrition-Salary

[ UTC ] Logs for employee-attrition-salary-jjoqoqqi9glfy5agycb8bq.streamlit.app/


────────────────────────────────────────────────────────────────────────────────────────


[16:41:31] :desktop_computer: Provisioning machine…


[16:41:31] :control_knobs: Preparing system…


[16:41:31] :chains: Spinning up manager process…


[16:41:37] :rocket: Starting up repository: ‘employee-attrition-salary’, branch: ‘main’, main module: ‘app.py’


[16:41:37] :octopus: Cloning repository…


[16:41:43] :octopus: Cloning into ‘/mount/src/employee-attrition-salary’…
Updating files: 100% (10844/10844), done.


[16:41:43] :octopus: Cloned repository!


[16:41:43] :octopus: Pulling code changes from Github…


[16:41:46] :package: Processing dependencies…



──────────────────────────────────────── uv ───────────────────────────────────────────



Using uv pip install.


Resolved 45 packages in 242ms


error: Failed to download distributions


Caused by: Failed to fetch wheel: numpy==1.25.0


Caused by: Failed to build: numpy==1.25.0


Caused by: Build backend failed to determine extra requires with build_wheel() with exit status: 1


— stdout:



— stderr:


Traceback (most recent call last):


File “”, line 8, in


File “/home/adminuser/.cache/uv/.tmpegWnJG/.venv/lib/python3.12/site-packages/setuptools/init.py”, line 10, in


import distutils.core

ModuleNotFoundError: No module named ‘distutils’




Checking if Streamlit is installed



────────────────────────────────────────────────────────────────────────────────────────




──────────────────────────────────────── pip ───────────────────────────────────────────



Using standard pip install.


Collecting altair==5.4.1 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 1))


Downloading altair-5.4.1-py3-none-any.whl.metadata (9.4 kB)


Collecting attrs==24.2.0 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 2))


Downloading attrs-24.2.0-py3-none-any.whl.metadata (11 kB)


Collecting blinker==1.8.2 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 3))


Downloading blinker-1.8.2-py3-none-any.whl.metadata (1.6 kB)


Collecting cachetools==5.5.0 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 4))


Downloading cachetools-5.5.0-py3-none-any.whl.metadata (5.3 kB)


Collecting certifi==2024.8.30 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 5))


Downloading certifi-2024.8.30-py3-none-any.whl.metadata (2.2 kB)


Collecting charset-normalizer==3.3.2 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 6))


Downloading charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (33 kB)


Collecting click==8.1.7 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 7))


Downloading click-8.1.7-py3-none-any.whl.metadata (3.0 kB)


Collecting gitdb==4.0.11 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 8))


Downloading gitdb-4.0.11-py3-none-any.whl.metadata (1.2 kB)


Collecting GitPython==3.1.43 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 9))


Downloading GitPython-3.1.43-py3-none-any.whl.metadata (13 kB)


Collecting idna==3.8 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 10))


Downloading idna-3.8-py3-none-any.whl.metadata (9.9 kB)


Collecting importlib-resources==6.4.4 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 11))


Downloading importlib_resources-6.4.4-py3-none-any.whl.metadata (4.0 kB)


Collecting jinja2==3.1.4 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 12))


Downloading jinja2-3.1.4-py3-none-any.whl.metadata (2.6 kB)


Collecting joblib==1.4.2 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 13))


Downloading joblib-1.4.2-py3-none-any.whl.metadata (5.4 kB)


Collecting jsonschema==4.23.0 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 14))


Downloading jsonschema-4.23.0-py3-none-any.whl.metadata (7.9 kB)


Collecting jsonschema-specifications==2023.12.1 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 15))


Downloading jsonschema_specifications-2023.12.1-py3-none-any.whl.metadata (3.0 kB)


Collecting markdown-it-py==3.0.0 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 16))


Downloading markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB)


Collecting MarkupSafe==2.1.5 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 17))


Downloading MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.0 kB)


Collecting mdurl==0.1.2 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 18))


Downloading mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB)


Collecting narwhals==1.6.2 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 19))


Downloading narwhals-1.6.2-py3-none-any.whl.metadata (5.8 kB)


Collecting numpy==1.25.0 (from -r /mount/src/employee-attrition-salary/requirements.txt (line 20))


Downloading numpy-1.25.0.tar.gz (10.4 MB)


 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.4/10.4 MB 121.1 MB/s eta 0:00:00[2024-09-04 16:41:53.886047] 

Installing build dependencies: started


Installing build dependencies: finished with status ‘done’


Getting requirements to build wheel: started


Getting requirements to build wheel: finished with status ‘done’


ERROR: Exception:


Traceback (most recent call last):


File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/cli/base_command.py”, line 180, in exc_logging_wrapper


status = run_func(*args)

         ^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/cli/req_command.py”, line 245, in wrapper


return func(self, options, args)

       ^^^^^^^^^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/commands/install.py”, line 377, in run


requirement_set = resolver.resolve(

                  ^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/resolver.py”, line 95, in resolve


result = self._result = resolver.resolve(

                        ^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py”, line 546, in resolve


state = resolution.resolve(requirements, max_rounds=max_rounds)

        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py”, line 397, in resolve


self._add_to_criteria(self.state.criteria, r, parent=None)

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py”, line 173, in _add_to_criteria


if not criterion.candidates:

       ^^^^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/structs.py”, line 156, in bool


return bool(self._sequence)

       ^^^^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py”, line 155, in bool


return any(self)

       ^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py”, line 143, in


return (c for c in iterator if id(c) not in self._incompatible_ids)

       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py”, line 47, in _iter_built


candidate = func()

            ^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py”, line 182, in _make_candidate_from_link


base: Optional[BaseCandidate] = self._make_base_candidate_from_link(

                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py”, line 228, in _make_base_candidate_from_link


self._link_candidate_cache[link] = LinkCandidate(

                                   ^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py”, line 290, in init


super().__init__(

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py”, line 156, in init


self.dist = self._prepare()

            ^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py”, line 222, in _prepare


dist = self._prepare_distribution()

       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py”, line 301, in _prepare_distribution


return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)

       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/operations/prepare.py”, line 525, in prepare_linked_requirement


return self._prepare_linked_requirement(req, parallel_builds)

       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/operations/prepare.py”, line 640, in _prepare_linked_requirement


dist = _get_prepared_distribution(

       ^^^^^^^^^^^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/operations/prepare.py”, line 71, in _get_prepared_distribution


abstract_dist.prepare_distribution_metadata(

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/distributions/sdist.py”, line 54, in prepare_distribution_metadata


self._install_build_reqs(finder)

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/distributions/sdist.py”, line 124, in _install_build_reqs


build_reqs = self._get_build_requires_wheel()

             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/distributions/sdist.py”, line 101, in _get_build_requires_wheel


return backend.get_requires_for_build_wheel()

       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_internal/utils/misc.py”, line 745, in get_requires_for_build_wheel


return super().get_requires_for_build_wheel(config_settings=cs)

       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py”, line 166, in get_requires_for_build_wheel


return self._call_hook('get_requires_for_build_wheel', {

       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py”, line 321, in _call_hook


raise BackendUnavailable(data.get('traceback', ''))

pip._vendor.pyproject_hooks._impl.BackendUnavailable: Traceback (most recent call last):


File “/home/adminuser/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py”, line 77, in _build_backend


obj = import_module(mod_path)

      ^^^^^^^^^^^^^^^^^^^^^^^

File “/usr/local/lib/python3.12/importlib/init.py”, line 90, in import_module


return _bootstrap._gcd_import(name[level:], package, level)

       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File “”, line 1387, in _gcd_import


File “”, line 1360, in _find_and_load


File “”, line 1310, in _find_and_load_unlocked


File “”, line 488, in _call_with_frames_removed


File “”, line 1387, in _gcd_import


File “”, line 1360, in _find_and_load


File “”, line 1331, in _find_and_load_unlocked


File “”, line 935, in _load_unlocked


File “”, line 995, in exec_module


File “”, line 488, in _call_with_frames_removed


File “/tmp/pip-build-env-gtc6r7gi/overlay/lib/python3.12/site-packages/setuptools/init.py”, line 10, in


import distutils.core

ModuleNotFoundError: No module named ‘distutils’




[notice] A new release of pip is available: 24.0 → 24.2


[notice] To update, run: pip install --upgrade pip


Checking if Streamlit is installed



────────────────────────────────────────────────────────────────────────────────────────



[16:41:59] :exclamation: installer returned a non-zero exit code


[16:41:59] :exclamation: Error during processing dependencies! Please fix the error and push an update, or try restarting the app.


[16:43:37] :exclamation: Streamlit server consistently failed status checks


[16:43:37] :exclamation: Please fix the errors, push an update to the git repo, or reboot the app.

4. streamlit==1.38.0, python==3.12[Github Repo](https://github.com/joeATX/Employee-Attrition-Salary)

You need Python<3.12 for numpy<1.26

1 Like