Python 3.7 virtualenvs on the "innit" system image
If you're using our "innit" system image, and want to create a virtualenv to use
Python 3.7, you'll need to specify which versions of pip
, setuptools
, and
wheel
you want -- otherwise the mkvirtualenv
command will install
versions that aren't compatible with that version of Python. Here's an example of how to do that:
mkvirtualenv myvirtualenv --python=python3.7 --pip 24.0 --setuptools 68.0.0 --wheel 0.42.0
Version 24.0 is the last version of pip
, 68.0.0 is the last version of
setuptools
and 0.42.0 is the last version of wheel
that are compatible with
Python 3.7.
You will also have to activate the virtualenv after making it -- normally,
mkvirtualenv
does that for you automatically, but if it's run with the --pip
option it doesn't. So:
workon myvirtualenv
If you don't specify the pip version and it installs an incompatible version, you'll
get an error that will look something like this when you run pip
:
Traceback (most recent call last): File "/home/yourusername/.virtualenvs/myvirtualenv/bin/pip", line 5, in <module> from pip._internal.cli.main import main File "/home/yourusername/.virtualenvs/myvirtualenv/lib/python3.7/site-packages/pip/_internal/cli/main.py", line 11, in <module> from pip._internal.cli.autocompletion import autocomplete File "/home/yourusername/.virtualenvs/myvirtualenv/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", line 10, in <module> from pip._internal.cli.main_parser import create_main_parser File "/home/yourusername/.virtualenvs/myvirtualenv/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", line 9, in <module> from pip._internal.build_env import get_runnable_pip File "/home/yourusername/.virtualenvs/myvirtualenv/lib/python3.7/site-packages/pip/_internal/build_env.py", line 18, in <module> from pip._internal.cli.spinners import open_spinner File "/home/yourusername/.virtualenvs/myvirtualenv/lib/python3.7/site-packages/pip/_internal/cli/spinners.py", line 9, in <module> from pip._internal.utils.logging import get_indentation File "/home/yourusername/.virtualenvs/myvirtualenv/lib/python3.7/site-packages/pip/_internal/utils/logging.py", line 13, in <module> from pip._vendor.rich.console import ( File "/home/yourusername/.virtualenvs/myvirtualenv/lib/python3.7/site-packages/pip/_vendor/rich/console.py", line 41, in <module> from pip._vendor.typing_extensions import ( File "/home/yourusername/.virtualenvs/myvirtualenv/lib/python3.7/site-packages/pip/_vendor/typing_extensions.py", line 1039 def TypedDict(typename, fields=_marker, /, *, total=True, closed=False, **kwargs): ^ SyntaxError: invalid syntax
or
Traceback (most recent call last): File "<string>", line 36, in <module> File "<pip-setuptools-caller>", line 14, in <module> File "/home/yourusername/.virtualenvs/myvirtualenv/lib/python3.7/site-packages/setuptools/__init__.py", line 18 sys.path.extend(((vendor_path := os.path.join(os.path.dirname(os.path.dirname(__file__)), 'setuptools', '_vendor')) not in sys.path) * [vendor_path]) # fmt: skip ^ SyntaxError: invalid syntax
or
File "/home/yourusername/.virtualenvs/myvirtualenv/lib/python3.7/site-packages/wheel/bdist_wheel.py", line 26, in <module> from ._bdist_wheel import bdist_wheel as bdist_wheel File "/home/yourusername/.virtualenvs/myvirtualenv/lib/python3.7/site-packages/wheel/_bdist_wheel.py", line 21, in <module> from typing import TYPE_CHECKING, Callable, Iterable, Literal, Sequence, cast ImportError: cannot import name 'Literal' from 'typing' (/usr/local/lib/python3.7/typing.py)