Таким образом, ваш рабочий процесс должен поддерживать отдельные ветви в отдельных рабочих каталогах? Это нормально, это довольно разумный рабочий процесс с Subversion.
Лично я хотел бы изменить любые программы Python, которые у вас есть, в исходном элементе управления, чтобы искать свои собственные библиотеки и изменять sys.path
перед импортом чего-либо; таким образом они будут работать независимо от того, где они были перемещены.
#!/usr/bin/env python
import os, sys
basedir = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.join(basedir, 'lib'))
Если вы не сделаете этого, вы можете поставить оболочку исполняемый файл в вашем ~/bin
или любой другой, где-то в $PATH
,
#!/bin/bash
dir=$(pwd)
while [[ $dir !=/]]; do
if [[ -d "$dir/lib" ]]; then
export PYTHONPATH="$dir/lib${PYTHONPATH:+:$PYTHONPATH}"
break
fi
dir="${dir%/*}"
done
if (($# > 0)); then exec "[email protected]"; fi
который просто осматривается для каталога lib
предварять в $PYTHONPATH
прежде чем запускать все, что захотите. Возможно, назовите его «py
».
$ cd dir1 # dir1/lib exists
$ py ./my-program
$ cd ../dir2 # dir2/lib exists
$ py ./my-program
Это также возможно иметь рабочий процесс, где вы остаетесь в пределах одного рабочего каталога, используя svn sw
изменить ветви. Поскольку ваш путь никогда не изменяется, установка PYTHONPATH
однажды останется действительной даже при изменении ветки.
(Это общий рабочий процесс в git, монотонная, Hg и т.д.)
Похоже, вы делаете что-то очень неправильно ... Правильно ли вы используете команду «svn switch»? – Juliano
Вы спрашиваете, как изменить переменную окружения при переключении рабочих копий? – hometoast
Я знаю, как переключать переменную среды ... Я спрашиваю, можно ли это сделать автоматически, на случай, если я забуду это сделать. – hyperboreean