如何在fish中设置PYTHONPATH?

9 投票
2 回答
7881 浏览
提问于 2025-04-18 10:22

下面的代码在bash中可以正常运行:

~$ echo $PYTHONPATH
<nothing>
~$ export PYTHONPATH=/path/to/test/folder
~$ echo $PYTHONPATH
/path/to/test/folder
~$ python -m test_script
hello world

但是在fish中就不行:

Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish
~> echo $PYTHONPATH
<nothing>
~> set --universal PYTHONPATH /path/to/test/folder
~> echo $PYTHONPATH
/path/to/test/folder
~> python -m test_script
/usr/bin/python: No module named test_script

我试过用 setset --globalset --universal

我该如何在fish中设置PYTHONPATH?(如果有关系的话,我是在运行Ubuntu 14.04。)

2 个回答

6

如果你想让这个改变一直有效,可以在下面的地方添加一行代码:

set -xg PYTHONPATH /path/to/test/folder $PYTHONPATH

把这行代码放到 ~/.fish/config.fish 文件的最底部。

11

仅仅设置变量是不够的,你还必须导出它(就像在bash中那样)。导出意味着子进程(比如调用Python的过程)也能获取这个变量的值。

来自fish文档的说明:

-x 或 --export 会将指定的环境变量导出到子进程中

所以,和bash中的指令直接对应的写法是:

~> set --export PYTHONPATH /path/to/test/folder

你可以添加--universal或其他参数,但在这里这个值是临时的,这和原来的bash示例是一致的。

(这个答案是通过一个类似的问题找到的。)

撰写回答