python普通用户无法使用pip和导入pip安装的模块

最近调试zabbix的微信报警,遇到模块导入问题,记录待查。

问题

centos7.2 x64 环境,root使用yum install python-pip pip install simplejson后,root用户可正常执行需要导入simplejson的脚本,zabbix用户无法执行,报错

1
2
3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named simplejson

普通用户也无法执行pip命令,报错找不到pip。

解决

1 解决执行python脚本时报错simplejson无法找到问题

1
2
sudo chmod 755 /usr/lib/python2.7/site-packages/simplejson
sudo chmod -R 644 /usr/lib/python2.7/site-packages/simplejson/

一直以为是环境path问题,在/etc/enviroment中设置了pythonpath还是无法解决。普通用户cd到simplejson时发现无法cd进入,确定应该是权限问题。通过修改权限和在python命令行调试,总算解决。

2 普通用户无法使用pip命令
暂时无法解决。

测试用一般用户手动执行python脚本,可以正常发微信告警。通过测试zabbix触发调用微信报警脚本报错,待解决。

1
Traceback (most recent call last):File "/usr/lib/zabbix/alertscripts/wechat.py", line 58, in <module>accesstoken = gettoken(corpid,corpsecret)File "/usr/lib/zabbix/alertscripts/wechat.py", line 18, in gettokentoken_file = urllib2.urlopen(gettoken_url)File "/usr/lib64/python2.7/urllib2.py", line 154, in urlopenreturn opener.open(url, data, timeout)File "/usr/lib64/python2.7/urllib2.py", line 431, in openresponse = self._open(req, data)File "/usr/lib64/python2.7/urllib2.py", line 449, in _open'_open', req)File "/usr/lib64/python2.7/urllib2.py", line 409, in _call_chainresult = func(*args)File "/usr/lib64/python2.7/urllib2.py", line 1258, in https_opencontext=self._context, check_hostname=self._check_hostname)File "/usr/lib64/python2.7/urllib2.py", line 1214, in do_openraise URLError(err)urllib2.URLError: <urlopen error [Errno -3] Temporary failure in name resolution>