这本来是个很简单的话题,以前也只是一略而过,没有深刻印象。但是在配置nginx-unit的时候,遇到了各种module找不到的问题,无论谷歌还是百度,都没有有效的答案。多亏某位大神提到了module search path这个问题(6. Modules - Python 3.6.5 documentation)。
文档说的其实很明白了:The directory containing the input script (or the current directory when no file is specified).
PATH).
The installation-dependent default.
而且通常大家开发都是用pycharm、pydev这种集成环境,默认会把各种module加到路径当中,所以基本上可以忽略这些问题。
但是nginx-unit配置模块的时候,需要在python的路径当中增加相应python模块,否则就会报错。最最最直接粗暴的办法(我个人认为),就是设置PYTHONPATH这个环境变量。
比如在ubuntu的你登录的用户的默认路径下(比如用root登录,就是/root),编辑 .bashrc 文件——linux下面 以' . '开头的文件,默认隐藏。在文件最后增加:
export PYTHONPATH=/root/python
我这里是在root下创建了个python目录,用于存放各种py脚本。
然后退出、重新登录就可以了——最简单直接,不需要记录其他的操作方式。
没错,配置了PYTHONPATH之后,在/root/python 目录下,创建的各种python脚本,就可以方便的配置到nginx-unit里面了,再也不会报错说什么module找不到了。
另外,在python命令行下面,运行:
import sys
print(sys.path)
就可以显示当前的模块搜索路径。