У меня есть сценарий run.sh, gitignored, который выполняет за меня работу по активации virtualenv и запуск моего пакета с соответствующими аргументами.
Мой репозиторий Git активно использует теги версий. Я хочу иметь возможность запускать «стабильную» версию вместе с версией, находящейся в разработке, без адской проверки Git.
Мне нужно иметь возможность запускать как стабильную, так и разрабатываемую версии в один и тот же рабочий каталог, поскольку им нужно использовать одну и ту же папку data/ (также gitignored).
Для этого мне нужен sys.path чтобы переодеться.
В частности, мне нужно удалить каталог src/ из sys.path (для стабильной работы).
Для этой цели я создал скрипт run-stable.sh, который выполняет извлечение и копирует исходные файлы в расположение gitignored (скажем, build/stable/):
Код: Выделить всё
#!/usr/bin/bash
cd ~/path/to/mypackage && . venv/bin/activate || exit 1
latest_stable=0.4.1
build_ver=(`cat build/stable.version 2>/dev/null`)
if [[ "$build_ver" != "$latest_stable" ]]
then
! { git diff --quiet && git diff --cached --quiet; } && echo "uncommitted files, cannot build" >&2 && exit 1
! git show-ref --tags v"$latest_stable" -q && echo "tag $latest_stable not found" >&2 && exit 1
[[ ! -d "build/stable" ]] && mkdir -p build/stable
dev_commit=(`git rev-parse HEAD`)
build_commit=(`git show-ref --tags v"$latest_stable"`)
git checkout "$build_commit"
cp -af src/mypackage build/stable/mypackage
git checkout "$dev_commit" # build/stable.version
fi
# My current attempt to change sys.path (failed) ---v
cat
Подробнее здесь: [url]https://stackoverflow.com/questions/79260611/run-two-different-versions-of-a-python-package-inside-virtualenv-alongside-each[/url]