python Debian 上的搜索路径顺序

python search paths order on Debian

我的 Debian(stretch) 上有两个 google.protobuf 模块。

  1. /usr/local/lib/python2.7/dist-packages/google
  2. /home/myuser/.local/lib/python2.7/site-packages/google(使用 pip --user 安装)

我想导入 2,但是 python 总是给我 1,而 ipython 导入 2。我试过设置 PYTHONPATH 这样/home/myuser/.local/lib/python2.7/site-packages/ 是其中的第一个,但不起作用。

有什么方法可以强制 python 先搜索我的 $HOME/.local/lib/python2.7/site-packages/ 吗?

是的。有关 python 如何确定首先导入哪个模块的官方说明,请参见此处:https://docs.python.org/2/tutorial/modules.html#the-module-search-pathkk

请参阅此处了解更改该默认行为的方法:http://www.hasenkopf2000.net/wiki/python/how-override-pythons-module-import-order/

在 hasenkopf 站点上提供的两个解决方案中,如果您改变主意要使用哪个模块,则第二个问题较少。您只需编辑文件,而不必记住您创建了哪些符号链接。简而言之,代码是:

import sys
# Assume path to module is
# /path/to/recent/version/of/module.py
sys.path.insert(0,"/path/to/recent/version/of")
import module

您将它放在脚本的顶部。