anki/python
Damien Elmes cbc358ff0b add aliases to run vendored python and node from command line
You can then do './scripts/python -m venv /path/to/venv' to create
a virtual env based on the bundled Python, which can be handy if
you don't happen to have the appropriate version of Python installed
separately.
2021-10-18 19:50:41 +10:00
..
pyqt5 pip/ -> python/ 2021-10-18 19:50:40 +10:00
pyqt6 pip/ -> python/ 2021-10-18 19:50:40 +10:00
stubs pip/ -> python/ 2021-10-18 19:50:40 +10:00
binary.bzl pip/ -> python/ 2021-10-18 19:50:40 +10:00
BUILD.bazel add aliases to run vendored python and node from command line 2021-10-18 19:50:41 +10:00
licenses.json pip/ -> python/ 2021-10-18 19:50:40 +10:00
licenses.sh pip/ -> python/ 2021-10-18 19:50:40 +10:00
python.bzl pip/ -> python/ 2021-10-18 19:50:40 +10:00
README.md pip/ -> python/ 2021-10-18 19:50:40 +10:00
requirements.in pip/ -> python/ 2021-10-18 19:50:40 +10:00
requirements.txt pip/ -> python/ 2021-10-18 19:50:40 +10:00
update.py pip/ -> python/ 2021-10-18 19:50:40 +10:00

To achieve reproducible builds we use pip-tools to lock packages to a particular version. Sadly this is complicated by the fact that Python can only tell us which transitive dependencies are required by actually installing packages, and if you run pip-tools on a Mac or Linux machine, it will miss packages that are required on Windows and vice versa.

So we're stuck manually merging dependencies for now. To update deps:

  • run 'bazel run update' to update requirements.txt for the current platform
  • consult the git diff, and manually merge the changes, undoing the removal of items pinned on other platforms
  • repeat the process on the other platform
  • run the tests to ensure nothing has broken on either platform
  • commit the changes to requirements.txt

At the time of writing, Macs and Linux machines have identical output - it is only Windows that differs. But we should not assume that will always be the case.