Can't deploy Streamlit- disutils error?

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

  1. Share the link to the public app (deployed on Community Cloud).
  2. Share the link to your app’s public GitHub repository (including a requirements file).
  3. Share the full text of the error message (not a screenshot).
  4. Share the Streamlit and Pythhttps://github.com/joeATX/Employee-Attrition-Salaryon versions.

It would help if you included the details asked for

When I try to deploy my streamlit basic app this is my error: ModuleNotFoundError: No module named ‘distutils’. I included my github repo I believe what else do i need to include?

[     UTC     ] Logs for employee-attrition-salary-jjoqoqqi9glfy5agycb8bq.streamlit.app/
────────────────────────────────────────────────────────────────────────────────────────
[16:28:25] 🖥 Provisioning machine...
[16:28:25] 🎛 Preparing system...
[16:28:25] ⛓ Spinning up manager process...
[16:28:29] 🚀 Starting up repository: 'employee-attrition-salary', branch: 'main', main module: 'app.py'
[16:28:29] 🐙 Cloning repository...
[16:28:36] 🐙 Cloning into '/mount/src/employee-attrition-salary'...
Updating files: 100% (10844/10844), done.
[16:28:37] 🐙 Cloned repository!
[16:28:37] 🐙 Pulling code changes from Github...
[16:28:40] 📦 Processing dependencies...

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

Using uv pip install.
Resolved 45 packages in 325ms
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 "<string>", line 8, in <module>
  File "/home/adminuser/.cache/uv/.tmpu7WjQ5/.venv/lib/python3.12/site-packages/setuptools/__init__.py", line 10, in <module>
    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 114.8 MB/s eta 0:00:00[2024-09-04 16:28:47.027734] 
  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 <genexpr>
    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 "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/tmp/pip-build-env-xdv26n17/overlay/lib/python3.12/site-packages/setuptools/__init__.py", line 10, in <module>
    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:28:52] ❗️ installer returned a non-zero exit code
[16:28:52] ❗️ Error during processing dependencies! Please fix the error and push an update, or try restarting the app.

https://employee-attrition-salary-jjoqoqqi9glfy5agycb8bq.streamlit.app/

You need python<3.12 to install numpy==1.25.0.

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.