我有以下脚本将干净PYTHONPATH
:设置与bash脚本PYTHONPATH和运行nosetests
#!/bin/bash
# Get the directory the script is in
DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
$ Walk up to root of branch dir
DIR=$DIR/../../..
PYTHONPATH=$DIR/module1
PYTHONPATH=$PYTHONPATH:$DIR/module2
PYTHONPATH=$PYTHONPATH:$DIR/module3
PYTHONPATH=$PYTHONPATH:$DIR/module4
export PYTHONPATH
这个脚本应该在串联中运行一个nosetest命令允许测试导入所有必要的需要的模块时没有任何问题:
./path/to/script/PythonPath.sh && nosetests <tons of other arguments>
然而,当我运行上面的命令,我在模块上指出它不存在的一个得到ImportError
。我在脚本的末尾添加了一条echo
语句来帮助调试,并且PYTHONPATH
与其应该完全相同。我也尝试手动设置PYTHONPATH
,似乎无法重现相同的问题。
所以它的工作原理? – vicg
@vicg是的,这是正确的。 – ILostMySpoon
subshell不能影响父shell,只需在脚本中运行测试即可。 – HuStmpHrrr