То есть ваш рабочий процесс состоит в том, чтобы хранить отдельные ветви в отдельных рабочих каталогах? Это нормально, это довольно разумный рабочий процесс с 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 "$@"; fi
, который просто просматривает каталог lib
, добавляя к $PYTHONPATH
перед запуском все, что вы хотите. Может быть, назовите это "py
".
$ cd dir1 # dir1/lib exists
$ py ./my-program
$ cd ../dir2 # dir2/lib exists
$ py ./my-program
Также возможно иметь рабочий процесс, в котором вы остаетесь в одном рабочем каталоге, используя svn sw
для изменения ветвей. Поскольку ваш путь никогда не меняется, настройка PYTHONPATH
один раз останется действительной даже с изменениями ветви.
(Это обычный рабочий процесс в git , monotone, hg и т. Д.)