Это слишком широкий вопрос, чтобы дать четкий ответ ...
При наличии двух версий одного и того же проекта, работающих в одной среде, один и тот же сеанс интерпретатора труден, почти невозможен.
Сначала, возможно, взгляните на этот потенциально связанный вопрос:
1. После прочтения вашего вопроса на ум приходит другое решение: установить две версии проекта в двух разных виртуальных средах. Затем в третьей виртуальной среде я запускал код, который выглядит следующим образом (вид непроверенного псевдокода, потребуется некоторая подстройка):
environments = [
'path/to/env1',
'path/to/env2',
]
results = []
for environment in environments:
output = subprocess.check_output(
[
environment + 'bin/python',
'-c',
'import package; print(package.do_something())',
],
)
results.append(parse_output(output))
plot_comparison(results)
2. Другой подход - в конечном итоге использовать tox для запуска тестовой программы в разных средах, содержащих каждую свою версию проекта. Затем создайте дополнительную среду для запуска кода, который будет интерпретировать и сравнивать результаты (возможно, записанные в файловой системе?).
3. Может быть, можно попытаться взломать что-нибудь вместе с importlib
. Установите 2 версии под 2 различными путями (pip install --target ...
). Затем в тестовом коде, что-то вроде этого:
- изменить
sys.path
, чтобы включить путь, содержащий версию 1 - import (может быть, importlib может помочь)
- запустить тест 1
- изменить
sys.path
, чтобы удалить путь, содержащий версию 1, и включить путь, содержащий версию 2 - , снова импортировать (возможно,
importlib.reload
необходимо) - запустить тест 2
- сравнить результаты