Python代码在原有.py文件可运行,新文件Ubuntu终端运行报错求助
这种情况我碰到过好几次,大概率是Python环境不一致或者依赖包的安装路径不匹配搞的鬼,咱们一步步来排查解决:
可能的原因及解决步骤
1. 先排查Python版本差异
Sublime Text的编译系统(Build System)用的Python版本,很可能和你终端默认调用的不一样。比如Ubuntu里默认python指向Python2,python3指向Python3,而Sublime通常默认用Python3。
- 先在终端里分别敲这两个命令,确认版本:
python --version python3 --version - 再看Sublime里用的是哪个版本:按
Ctrl+Shift+B,看你选择的编译选项是Python还是Python3。如果Sublime用的是Python3,但你终端用python(Python2)去跑脚本,肯定会报错——比如print在Python2里是语句不是函数,或者tabulate包的安装/使用逻辑在两个版本里有差异。 - 解决办法:终端里用和Sublime一致的命令运行脚本,比如Sublime用Python3,就敲
python3 your_script.py。
2. 检查依赖包的安装环境
你代码里用到了tabulate库,这个包可能只装在了Sublime使用的Python环境里,终端的Python环境没装,或者反过来。
- 先搞清楚Sublime用的Python路径:在Sublime里新建个临时脚本,运行这段代码:
会输出类似import sys print(sys.executable)/usr/bin/python3或者~/.local/bin/python3的路径。 - 然后在终端里用这个路径来安装
tabulate:
(把上面的路径换成你实际得到的)/usr/bin/python3 -m pip install tabulate - 另外你提到之前这段代码放在旧文件里终端能跑,那可以回忆下旧文件当时用的是哪个Python命令运行的,照搬过来就行。
3. 确认终端的工作目录
有时候Sublime运行脚本时的工作目录,和你终端当前的工作目录不一样(比如Sublime打开的是项目文件夹,而终端在你的Home目录)。虽然你的代码目前看起来没用到相对路径文件,但也可以排查下:
- 在Sublime里运行这段代码看当前工作目录:
import os print(os.getcwd()) - 终端里用
pwd命令看当前目录,如果不一样,就用cd命令切换到Sublime的工作目录,再运行脚本。
4. 检查代码完整性
你提供的代码最后是x = x...,看起来被截断了。虽然Sublime里Ctrl+B没报错,但如果代码真的有遗漏(比如没闭合的循环、括号),终端运行时也会报错。不过你说之前放在旧文件里能跑,这个可能性比较小,但还是建议确认下代码是否完整。
内容的提问来源于stack exchange,提问作者Stoverflow
相关产品推荐
相关产品推荐

