Python 3与Sublime Text 2不兼容,无法正常工作。

3

我已经使用Sublime Text 2一年多了,最近开始用它来写Python。Sublime内置了一个Python构建工具,我尝试使用过(内置的是2.7.3或其他2.X版本)。但是我正在使用Python 3.3.0版本。我已经编辑了sublime-build文件并将其更改为:

{
"cmd": ["python3", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python"
}

如在另一个stackoverflow线程上建议的那样。我尝试重新启动sublime并尝试运行我的代码:

x = input("Name: ")
print("Welcome " + x)
input()

但是当我使用build(Ctrl + B)运行时,在底部的控制台中会得到以下错误:

Name: Traceback (most recent call last):
File "/home/andrew/grive/Documents/RandomProjects/PythonStuff/HelloWorld.py", line 32,      
in <module>
x = input("Name: ")
EOFError: EOF when reading a line
[Finished in 0.1s with exit code 1]

此外,我尝试通过使用SublimeREPL和其中的Python函数来绕过内置的构建功能,但它们也检测到我的Python构建为2.7.3,因此无法编译我的3.3.0代码。请注意,我已安装Python 3,我正在使用Ubuntu,当我在终端中输入“python3”时,终端将启动带有正确版本的Python。

所以我有两个问题:

为什么我的python3.sublime-build不起作用,我该如何解决?

由于我是一个Linux新手,我很难访问构建文件。我曾经找到过它们,但现在我忘记了。它们位于/home/〜.config/sublime-text-2/等等等等。

我看不到.config文件,如果可以的话,您能解释一下这是如何工作的吗?

3个回答

4
你的问题在于sublimetext构建不能接受用户输入 - 没有连接的输入流。你的Python版本无关紧要。
然而,可以编写插件来接受输入!
关于配置文件,只需使用“首选项->浏览程序包”菜单项即可。

啊,谢谢,这很有道理。那么,作为一般提示,如果我正在使用Sublime,我应该使用命令行来执行我的Python代码吗?我认为这可能是测试它最简单的方法,因为通过IDLE运行可能不太方便。 - user1766711
@Andy093:我写了一个插件,可以完全满足你的需求。它有一些小问题,但对我来说是可用的。请查看我的编辑。 - Eric

1
我发现将“Python.sublime-build”文件中的“python”更改为“python3”的方法是有效的。
我知道这是因为当我遇到同样的问题时,OP的解决方案帮助了我,证据在以下行中:
import sys
print(sys.platform)

整个实践代码:

import sys
print(sys.platform)
print(2 ** 100)
x = 'Spam!'
print(x * 8)
input('Press ENTER to exit...')

在Python 2.7中,返回值为'linux2'(对我而言)。 在Python 3.3中,返回值为'linux'。 这是我使用PVM首次检测到的。 当我在Sublime 2中执行“Build”时,“linux2”是输出;使用OP的方法将输出更改为“linux”,因此我认为这是正确的做法(最简单的方式)。

使用Python构建的输出:

linux2
1267650600228229401496703205376
Spam!Spam!Spam!Spam!Spam!Spam!Spam!Spam!
Press ENTER to exit...Traceback (most recent call last):
  File "/home/sick/Python/script1.py", line 6, in <module>
    input('Press ENTER to exit...')
EOFError: EOF when reading a line
[Finished in 0.0s with exit code 1]

使用Python3构建输出:

linux
1267650600228229401496703205376
Spam!Spam!Spam!Spam!Spam!Spam!Spam!Spam!
Press ENTER to exit...Traceback (most recent call last):
  File "/home/sick/Python/script1.py", line 6, in <module>
    input('Press ENTER to exit...')
EOFError: EOF when reading a line
[Finished in 0.1s with exit code 1]

没有程序错误;它出现错误是因为程序期望用户输入(据我所知,但我只看到第四章)。

0

我曾经遇到过同样的问题,只有当我使用终端启动这个程序时才能解决它:

 cd WayToFile
 python FileName

所有工作都已完成。也许这就是在所有Python版本中应该工作的方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接