当我不使用sudo执行我的脚本时:
$ python main.py
Traceback (most recent call last):
File "main.py", line 3, in <module>
import irc
File "/Users/judgej4/twitchchat/irc.py", line 3, in <module>
import asyncio
File "/Users/judgej4/anaconda3/lib/python3.6/site-packages/asyncio/__init__.py", line 21, in <module>
from .base_events import *
File "/Users/judgej4/anaconda3/lib/python3.6/site-packages/asyncio/base_events.py", line 18, in <module>
import concurrent.futures
File "/Users/judgej4/anaconda3/lib/python3.6/site-packages/concurrent/futures/__init__.py", line 8, in <module>
from concurrent.futures._base import (FIRST_COMPLETED,
File "/Users/judgej4/anaconda3/lib/python3.6/site-packages/concurrent/futures/_base.py", line 381
raise exception_type, self._exception, self._traceback
^
SyntaxError: invalid syntax
当我使用sudo执行时,语法错误消失了,并且脚本可以正常执行。
我该如何调试它?
编辑 请注意,我对每个版本都使用相同的Python版本:
$ which python
/Users/judgej4/anaconda3/bin/python
$ sudo which python
/Users/judgej4/anaconda3/bin/python
我注意到PYTHONPATH包含了一些常规用户的目录,而sudo则没有:
/Users/judgej4/anaconda3/lib/python3.6/site-packages
/usr/local/Cellar/apache-spark/2.2.1/libexec/python
看起来错误是来自第一个目录。
我可以从我的PYTHONPATH中删除该目录,但我更愿意解决问题,这个问题似乎与anaconda有关。
编辑2
$ python --version
Python 3.6.3 :: Anaconda custom (64-bit)
$ sudo python --version
Python 3.6.3 :: Anaconda custom (64-bit)
EDIT 3
$ command -v python
/Users/judgej4/anaconda3/bin/python
$ sudo command -v python
/Users/judgej4/anaconda3/bin/python
sudo python --version
和python --version
命令,你可能会发现没有sudo
的那个是 Python 2 版本。 - metatoastercommand -v
的输出,而不是which
。另请参见 从Bash脚本检查程序是否存在。 - jww