如何在Python交互控制台中执行PyDev项目?
我刚开始学习Python和PyDev,最近在PyDev里写了一个“hello world”程序。我的问题是:我该怎么在Linux终端里执行它,或者在交互式Python模式下打开它呢?我试了很多命令,比如 ./hello.py
、import hello.py
和 python hello.py
,但得到的结果都是 SyntaxError: invalid syntax
或其他错误。
我还有另一个问题。我在Linux上打开了终端,并用 sudo eclipse
启动了Eclipse。
在PyDev中,我首先去到了
File => New => Python Project => HelloWorld (name of project) =>
right click the project => New => PyDev Module => hello (module name).
我在终端里输入的名字是模块的名字,对吧?不管怎样,我也试过用项目的名字,但还是不行。只是想确认一下。
还有,我什么时候需要用 chmod +x
?每次在PyDev里写这个命令时,左边都会出现一个X,表示不正确。像这样: X chmod +x
。
3 个回答
要回答你第一个问题,如果想在交互模式下导入文件,只需使用 import filename
,但不要加上 .py 后缀。
C:\Users\CodeThis\Documents\py\search>python
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import aStar
>>> aStar.search((0,0),(5,9))
[(0, 0), (9, 0), (8, 0), (7, 0), (6, 0), (6, 9), (5, 9)]
>>>
大概就是这样。
要配置PyDev,确保你先阅读它的入门手册:http://pydev.org/manual_101_root.html
现在,你可能遇到了语法错误,因为你在使用Python 3。在Python 3中,print不再是一个关键字,而是一个函数(所以你需要像调用函数一样使用print()),另外要记住,raw_input()在Python 3中被改名为input()。
我现在明白你在问什么了。如果你想从命令行执行一个文件里的内容,最简单的方法就是把它放在一个类里面。
试着把你的代码改成下面这样:
#!/usr/bin/python
class Hello:
def __init__(self):
print "Hello, Interactive Shell World!"
raw_input()
这样就创建了一个叫做 Hello 的类,构造函数会运行你当前文件里的代码。接着,在和 hello.py 文件同一个目录下启动一个交互式的命令行。下面是一个示例会话的粘贴:
>>> from hello import Hello
>>> Hello()
Hello, Interactive Shell World!
<hello.Hello instance at 0xb782686c>
>>>
它会打印出消息,等待输入,然后打印出新创建对象的字符串表示,最后返回到提示符。如果你想避免最后的打印输出,可以把对象赋值给一个变量,比如:
>>> h = Hello()
如果你想保持从命令行执行文件的能力(而不是从交互式命令行),可以在文件的底部添加这段代码:
if __name__ == '__main__':
Hello()
你需要在终端中执行 "chmod +x"。在 hello.py 所在的目录下,运行:
chmod +x hello.py
这样你就可以像这样运行你的文件:./hello.py,而不是 "python hello.py"。现在想想,你可能把 Python 的交互式命令行和 Unix 命令行搞混了。你可以很容易地通过 "python hello.py" 在 Unix 命令行中运行你的文件,但如果你想在 Python 的交互式命令行中运行代码,就需要像我上面说的那样做。