Error while uploading my app in streamlit

Hi,

My code works on the local machine. It also works in github didactic giggle. It works in the streamlit cloud without authentication details. However when I am loading the full code with authentication, in stream lit cloud, it giving me below errors.

python veriosn 3.11.5

My requirements.txt file as below details.

setuptools>=58.0.4
wheel>=0.38.4
pandas==2.0.3
numpy==1.23.5
scikit-learn==1.3.0
xgboost==2.0.3
scipy==1.11.1
streamlit==1.38.0
streamlit-authenticator==0.3.3

however I am getting following errors, in the log file when I am trying load it in streamlit cloud.

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

Using uv pip install.
Resolved 54 packages in 426ms
error: Failed to download distributions
Caused by: Failed to fetch wheel: numpy==1.23.5
Caused by: Failed to build: numpy==1.23.5
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/.tmpY6xkLC/.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 setuptools>=58.0.4 (from -r /mount/src/hindi-news-story-rating-prediction-app/requirements.txt (line 1))
Downloading setuptools-75.1.0-py3-none-any.whl.metadata (6.9 kB)
Collecting wheel>=0.38.4 (from -r /mount/src/hindi-news-story-rating-prediction-app/requirements.txt (line 2))
Downloading wheel-0.44.0-py3-none-any.whl.metadata (2.3 kB)
Collecting pandas==2.0.3 (from -r /mount/src/hindi-news-story-rating-prediction-app/requirements.txt (line 3))
Downloading pandas-2.0.3.tar.gz (5.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.3/5.3 MB 86.9 MB/s eta 0:00:00[2024-09-25 10:26:53.699017]
Installing build dependencies: started
Installing build dependencies: finished with status β€˜done’
Getting requirements to build wheel: started
Getting requirements to build wheel: still running…
Getting requirements to build wheel: finished with status β€˜done’
Preparing metadata (pyproject.toml): started
Preparing metadata (pyproject.toml): finished with status β€˜done’
Collecting numpy==1.23.5 (from -r /mount/src/hindi-news-story-rating-prediction-app/requirements.txt (line 4))
Downloading numpy-1.23.5.tar.gz (10.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.7/10.7 MB 278.7 MB/s eta 0:00:00[2024-09-25 10:28:43.850040]
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-rtwx61xj/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

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

[10:28:49] :exclamation: installer returned a non-zero exit code
[10:28:49] :exclamation: Error during processing dependencies! Please fix the error and push an update, or try restarting the app.

The logs show that you have python 3.12. You need an older python to install numpy==1.23.5.

thanks for the feedback.
is there any change I can make in the requirement.txt file to make the code work for me in streamlit?

Asking for numpy>=1.26 will certainly get rid of the issue you are having now. Whether the code will work after that, I don’t know.

While I greatly appreciate Streamlit’s ease of use, seamless app deployment to the cloud, and the prompt, helpful responses from the support teamβ€”especially considering it’s a free platformβ€”I have encountered some challenges. Specifically, I’ve noticed that code which was previously deployed successfully can sometimes face new issues when redeployed later. This inconsistency can be frustrating and suggests there may be underlying issues with version control or platform updates.

This can happen if, from one deployment to the other, the defaullt version of python changes and becomes incompatible with your requirements or your code. You can sill choose a different python, or change your requirements or your code, but the platform cannot do that for you.

Ultimately, the burden of keeping your code, your requirements and your python compatible is on you. I cannot really think of a good way to mitigate this.

As an alternative to changing your Python requirements to be compatible with the newer, default version of Python, you can also deploy your app to an older version of Python to match conditions in the past when it did work.

Within Community Cloud, you are restricted to the latest patch within each version of Python still receiving security updates. So you can select version 3.11 during deployment.