2

如果您想使用给定的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具有相同的内容。

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

我正在寻找的行为是:

$ 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', '']

编辑

如果目录是第二个,我看不出有什么害处:

['', '/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系统范围的库之前的库)。

4

2 回答 2

1

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

于 2013-11-13T21:25:55.170 回答
1

对我来说工作:

$PYTHONPATH="/home/farhad" python -c 'import sys; print sys.path[:2]'
['', '/home/farhad']
$
于 2013-11-13T21:19:43.980 回答