`Failed to resolve compatible artifacts from lock ...
# general
f
Failed to resolve compatible artifacts from lock 3rdparty/python/default.lock for 1 target:
target is
streamlit
in this case (more details in thread)
Hey everyone! I'm very new to pants so apologies if this is an obvious fix
Basically I want to add the streamlit library to my
requirements.txt
file so it looks like this:
Copy code
numpy<2.0.0
rdkit==2023.3.3
datamol==0.11.2
streamlit==1.36.0
pandas==2.2.2
when I try to run
pants test tests/
which contains files that would use this library I get the following error
Copy code
20:32:54.44 [INFO] Completed: Building 5 requirements for requirements.pex from the 3rdparty/python/default.lock resolve: datamol==0.11.2, numpy<2.0.0, pandas==2.2.2, rdkit==2023.3.3, streamlit==1.36.0
20:32:54.45 [ERROR] 1 Exception encountered:

Engine traceback:
  in `test` goal

ProcessExecutionFailure: Process 'Building 5 requirements for requirements.pex from the 3rdparty/python/default.lock resolve: datamol==0.11.2, numpy<2.0.0, pandas==2.2.2, rdkit==2023.3.3, streamlit==1.36.0' failed with exit code 1.
stdout:

stderr:
Failed to resolve compatible artifacts from lock 3rdparty/python/default.lock for 1 target:
1. /usr/local/python/3.10.13/bin/python3.10:
    Failed to resolve all requirements for cp310-cp310-manylinux_2_31_x86_64 interpreter at /usr/local/python/3.10.13/bin/python3.10 from 3rdparty/python/default.lock:

Configured with:
    build: True
    use_wheel: True

Dependency on streamlit (via: streamlit==1.36.0) not satisfied, no candidates found.
I have been sure to generate lockfiles before running this and interestingly I get the following error for fetching streamlit
Copy code
ERROR: Could not find a version that satisfies the requirement streamlit==1.36.0 (from versions: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.8.2, 0.9.0, 0.11.0, 0.12.2, 0.12.3, 0.12.4, 0.13.0, 0.13.1, 0.13.3, 0.13.5, 0.14.2, 0.15.0, 0.15.1, 0.15.2, 0.15.3, 0.15.4, 0.15.5, 0.15.6, 0.16.0, 0.16.1, 0.16.2, 0.16.3, 0.17.0, 0.17.1, 0.17.2, 0.18.0, 0.18.1, 0.19.0, 0.19.1, 0.20.0, 0.21.0, 0.22.0, 0.22.1, 0.22.2, 0.23.0, 0.24.0, 0.24.1, 0.24.2, 0.24.3, 0.25.0, 0.26.0, 0.26.1, 0.27.0, 0.28.0, 0.29.0, 0.30.0, 0.31.0, 0.32.0, 0.33.0, 0.34.0, 0.35.0, 0.36.0, 0.37.0, 0.40.0, 0.40.1, 0.41.0, 0.42.0, 0.43.0, 0.43.1, 0.43.2, 0.44.0, 0.45.0, 0.46.0, 0.47.0, 0.47.1, 0.47.2, 0.47.3, 0.47.4, 0.48.0, 0.48.1, 0.49.0, 0.50.0, 0.50.1, 0.50.2, 0.51.0, 0.52.0, 0.52.1, 0.52.2, 0.53.0, 0.54.0, 0.55.0, 0.56.0, 0.57.0, 0.57.1, 0.57.2, 0.57.3, 0.58.0, 0.59.0, 0.60.0, 0.61.0, 0.62.0, 0.62.1, 0.63.0, 0.63.1, 0.64.0, 0.65.0, 0.65.1, 0.65.2, 0.66.0, 0.67.0, 0.67.1, 0.68.0, 0.68.1, 0.69.0, 0.69.1, 0.69.2, 0.70.0, 0.71.0, 0.72.0, 0.73.0, 0.73.1, 0.74.0, 0.74.1, 0.75.0, 0.76.0, 0.77.0, 0.78.0, 0.79.0, 0.80.0, 0.81.0, 0.81.1, 0.82.0, 0.83.0, 0.84.0, 0.84.1, 0.84.2, 0.85.0, 0.85.1, 0.86.0, 0.87.0, 0.88.0, 0.89.0, 1.0.0, 1.1.0, 1.2.0, 1.3.0, 1.3.1, 1.4.0, 1.5.0, 1.5.1, 1.6.0rc3, 1.6.0rc4, 1.6.0, 1.7.0, 1.8.0rc1, 1.8.0, 1.8.1rc1, 1.8.1, 1.9.0rc1, 1.9.0, 1.9.1rc1, 1.9.1rc2, 1.9.1, 1.9.2rc1, 1.9.2, 1.10.0rc1, 1.10.0rc2, 1.10.0, 1.11.0rc1, 1.11.0, 1.11.1rc1, 1.11.1, 1.12.0rc1, 1.12.0rc2, 1.12.0)
ERROR: No matching distribution found for streamlit==1.36.0
I've confirmed that pip installing streamlit works fine (BTW this error happens regardless of if I add a version specification in the requirements file) and can be imported etc
so what gives?
also in case it's relevant I ran
pants export --resolve=python-default
prior to generating lock files. I also tried
pants clean-all
and
pants resolve
but neither of these goals were recognized (I'm on pants version 2).
b
A quick question - are you running the lockfile generation and the test command on the same platform? I can see in the test command that you have an x86 Linux machine:
Failed to resolve all requirements for cp310-cp310-manylinux_2_31_x86_64 interpreter at /usr/local/python/3.10.13/bin/python3.10
f
I think so! Im using a codespace to run this
although I will say this has now been resolved thanks to my fearless leader @thousands-hair-85964 who figured out we weren't explicitly calling the
python-default
virtual environment we created in the pants.toml. After that we also removed versions for the problem packages in requirements.txt and then running the tests from root fixed the error (after exporting the virtual environment and running lockfiles)
b
Glad you're unblocked. What do you mean by "calling the
python-default
virtual environment"? Just trying to clarify what's going on. Pants should hopefully be managing virtual envs internally and `pants export`ing one isn't required for commands like
pants test
, only when want to configure an IDE or something to access the required deps
f
Thanks for the follow up, by 'calling the python default virtual env' I meant exporting the requirements to the python-default resolve and re-generating the lockfiles after changing some of the requirements.