繁体   English   中英

我的python2.7突然停止工作,抱怨一个python3.5脚本

[英]My python2.7 suddenly stopped working, complaining about a python3.5 script

到目前为止,我的 python27 和 python35/36 安装工作正常。 现在突然间,当我在终端上运行 python2 时,我得到的只是:

$蟒蛇2

  File "/usr/lib/python3.5/site.py", line 182
    file=sys.stderr)
        ^
SyntaxError: invalid syntax

为什么 python2 试图访问 python3 站点包脚本? 我怎样才能解决这个问题?
(Ubuntu 16.04 操作系统)

编辑:这就是 output。 如果我使用详细开关:

$ python2 -v
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
  File "/usr/lib/python3.5/site.py", line 182
    file=sys.stderr)
        ^
SyntaxError: invalid syntax
# clear __builtin__._
# clear sys.path
# clear sys.argv
# clear sys.ps1
# clear sys.ps2
# clear sys.exitfunc
# clear sys.exc_type
# clear sys.exc_value
# clear sys.exc_traceback
# clear sys.last_type
# clear sys.last_value
# clear sys.last_traceback
# clear sys.path_hooks
# clear sys.path_importer_cache
# clear sys.meta_path
# clear sys.flags
# clear sys.float_info
# restore sys.stdin
# restore sys.stdout
# restore sys.stderr
# cleanup __main__
# cleanup[1] zipimport
# cleanup[1] signal
# cleanup[1] exceptions
# cleanup[1] _warnings
# cleanup sys
# cleanup __builtin__
# cleanup ints: 5 unfreed ints
# cleanup floats

根据要求将评论转换为回答:

您说您的.bashrc包含以下行:

export PYTHONPATH="${PYTHONPATH}:/usr/lib/python3.5" 

PYTHONPATH是一种 hack,默认情况下不应设置,除非您亲自在您自己开发的模块的特定目录中进行黑客攻击,您懒得转换为可安装包(如果需要,必须完全兼容 Python 2/3两者都可以工作)。 通过在您的PYTHONPATH中包含/usr/lib/python3.5 ,它表示所有版本的 Python(不仅仅是 3.5)都应该在执行import时查看默认模块查找位置之前查看那里。

要修复,您需要做的就是:

  1. 从您的.bashrc中注释掉该行(以防止将来出现问题)
  2. 在现有终端中运行unset PYTHONPATH以立即解决问题(或在第 1 步后退出并重新登录)

使用多个 python 版本时,请始终确保PYTHOPATHPYTHONHOME指向正确的目录,第一个应指向您的 python bin 文件夹,第二个应指向正确站点包所在的 lib 文件夹

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM