从shell预先添加sys.path?

时间:2013-11-13 21:13:56

标签: python shell path

如果您想使用给定的python二进制文件您可以添加PATH

如果您想使用给定的libpython您可以添加LD_LIBRARY_PATH

现在假设你想使用给定的包目录。我试过了PYTHONPATH - 但它不起作用:

$ python -c 'import sys; print sys.path[:2]'
['', '/home/boris/.local/lib/python2.7/site-packages']
$ PYTHONPATH="/home/boris/test/lib/python2.7/site-packages" python -c 'import sys; print sys.path[:2]'
['', '/home/boris/.local/lib/python2.7/site-packages']

为了做到这一点你必须在脚本中做到:

import sys
sys.path.insert(0, "/home/boris/test/lib/python2.7/site-packages")

或使用相同的内容制作默认usercustomize.py中的特殊site-packages

有没有办法从shell修改sys.path

我正在寻找的行为是:

$ python -c 'import sys; print sys.path[:2]'
['', '/home/boris/.local/lib/python2.7/site-packages']
$ your-shell-command
$ python -c 'import sys; print sys.path[:2]'
['/home/boris/test/lib/python2.7/site-packages', '']

修改

如果dir成为第二名,我认为没有坏处:

['', '/home/boris/test/lib/python2.7/site-packages']

但是

~: PYTHONPATH="/home/farhad" python -c 'import sys; print sys.path[:2]'
['', '/home/boris/.local/lib/python2.7/site-packages']

对我不起作用。可能是因为我有usercustomize.py(在系统范围之前我也想要~/.local个库)。

2 个答案:

答案 0 :(得分:1)

对我而言:

$PYTHONPATH="/home/farhad" python -c 'import sys; print sys.path[:2]'
['', '/home/farhad']
$

答案 1 :(得分:1)

在我看来,正如您在评论中描述的那样,您的特定用例将通过使~/.local/.../numpy符号链接,然后更改该符号链接而不是直接更改导入路径来涵盖。