python Debian 上的搜索路径顺序
python search paths order on Debian
我的 Debian(stretch) 上有两个 google.protobuf
模块。
- /usr/local/lib/python2.7/dist-packages/google
- /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
您将它放在脚本的顶部。
我的 Debian(stretch) 上有两个 google.protobuf
模块。
- /usr/local/lib/python2.7/dist-packages/google
- /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
您将它放在脚本的顶部。