在鱼中添加*多个*路径到PYTHONPATH

时间:2016-05-24 11:13:08

标签: python environment-variables fish

Here我读了如何在鱼中附加到PYTHONPATH,这对于一个字符串工作正常。

但是,如果我这样做:

set --export PYTHONPATH $PYTHONPATH path1 path2

我明白了:

>> import os
>> os.environ["PYTHONPATH"]
'path1\x1epath2'

可替换地:

$ python -c "import os; print os.environ['PYTHONPATH']"
path1path2

这里有什么问题?

3 个答案:

答案 0 :(得分:2)

如果您正在使用鱼2.2.0(或刚刚发布的2.3.0),则只有三个env变量会自动拆分并由冒号连接:PATH,MANPATH,CDPATH。所有其他“路径”列表env变量都被视为单个元素数组,除非您将它们显式设置为多个值,如示例中所示。但是,如果在导出时执行此操作,则值将由ASCII RS(0x1E)字符分隔。你应该像处理bash,zsh等一样处理PYTHONPATH。

鱼类项目有几个问题,我们正在讨论对这些变量处理的可能改进。参见

https://github.com/fish-shell/fish-shell/issues/2090

https://github.com/fish-shell/fish-shell/issues/1656

https://github.com/fish-shell/fish-shell/issues/436

答案 1 :(得分:0)

您可以通过冒号分隔环境变量中的路径来设置多个路径。我不使用鱼,但在ZSH中,我会这样做:

$ export PYTHONPATH=/path/to/foo:/path/to/bar
$ python -c "import sys; print sys.path"
['', '/path/to/foo', '/path/to/bar', ...

答案 2 :(得分:0)

Fish在即将发布的3.0版本中提供了一种解决此问题的新机制。

有关更多信息,请参见以下PR:https://github.com/fish-shell/fish-shell/pull/5245