Skip to content

Commit

Permalink
Fix pip environment resolution (#1329)
Browse files Browse the repository at this point in the history
Calling `pip install` multiple times can (deeply unfortunately) allow an
environment to become out-of-sync; `pip` doesn't "remember" the
constraints of previous installation commands.

One of the largest effects here is that doing `pip install -e .`
_followed_ by `pip install git+<qiskit>@main` installs `qiskit-terra`
from the initial installation (via `qiskit==0.45.2`), then installs
`qiskit==1.0.0.dev0` from Git, which is an incompatible environment.
Doing the whole environment resolution in a single `pip install` command
fixes this, as the `qiskit` dependency is correctly resolved to be
_only_ the `1.0.0.dev0` version.

Co-authored-by: Kevin Tian <kevin.tian@ibm.com>
  • Loading branch information
jakelishman and kt474 authored Jan 22, 2024
1 parent bde88f8 commit 542ab18
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 18 deletions.
9 changes: 3 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .
pip install -c constraints.txt -r requirements-dev.txt
pip install -c constraints.txt -r requirements-dev.txt -e .
- name: Run black
run: make style
- name: Run lint
Expand Down Expand Up @@ -99,8 +98,7 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .
pip install -c constraints.txt -r requirements-dev.txt
pip install -c constraints.txt -r requirements-dev.txt -e .
- name: Run unit tests
run: make unit-test-coverage
- name: Report coverage to coveralls.io
Expand Down Expand Up @@ -142,8 +140,7 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .
pip install -c constraints.txt -r requirements-dev.txt
pip install -c constraints.txt -r requirements-dev.txt -e .
- name: Run integration tests
run: make integration-test
tests-finished:
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .
pip install -c constraints.txt -r requirements-dev.txt
pip install -c constraints.txt -r requirements-dev.txt -e .
- name: Run e2e tests
run: make e2e-test
run: make e2e-test
3 changes: 1 addition & 2 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .
pip install -c constraints.txt -r requirements-dev.txt
pip install -c constraints.txt -r requirements-dev.txt -e .
- name: Run integration tests
run: make integration-test
3 changes: 1 addition & 2 deletions .github/workflows/q-ctrl-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .
pip install -c constraints.txt -r requirements-dev.txt
pip install -c constraints.txt -r requirements-dev.txt -e .
- name: Run q-ctrl tests
run: python -m unittest test/qctrl/test_qctrl.py
10 changes: 5 additions & 5 deletions .github/workflows/unit-tests-terra-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ on:
jobs:
unit-tests-latest-qiskit-terra:
if: github.repository_owner == 'Qiskit'
name: Run unit tests with latest code of qiskit-terra
name: Run unit tests with latest code of Qiskit
runs-on: "ubuntu-latest"
env:
LOG_LEVEL: DEBUG
Expand All @@ -35,10 +35,10 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .
pip install -c constraints.txt -r requirements-dev.txt
pip install -U git+https://github.com/Qiskit/qiskit-terra.git
# Installing the complete environment should happen in one `pip install` step,
# or pip will generally allow broken combinations of packages to be installed.
pip install -c constraints.txt -r requirements-dev.txt -e . git+https://github.com/Qiskit/qiskit.git
- name: Run tests
# running unit tests against latest (non-released) code of qiskit-terra gives a basic level
# of confidence that the integration between qiskit-ibm-runtime and qiskit-terra works
run: make unit-test
run: make unit-test

0 comments on commit 542ab18

Please sign in to comment.