从壳牌

从壳牌

问题描述:

在Windows上运行的Python

所以我有一些被命名的脚本“some_class.py”位于同一文件夹中python.exe:从壳牌

from __future__ import print_function 

class some_class: 
    def say_it(self): 
    print('hello') 

def main(): 
    instance = some_class() 
    instance.say_it() 

if __name__ == '__main__': 
    main() 

当我尝试用下面的命令运行它,而在Python的外壳内的PowerShell:

some_class.py 

我得到:

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
NameError: name 'some_class' is not defined 

Python的版本是3.4.1。我究竟做错了什么?

+0

尝试使用“python some_class.py”。 – wshcdr 2015-04-01 10:31:43

如果你想使用文件名来运行它,那么不要从cmd提示符启动一个python shell,只需python34 some_class.pyif __name__ == '__main__':意味着main()函数将在脚本执行时运行。如果您导入脚本,它将不会运行,即使用if __name__ == '__main__'

你通常不会把你的python程序放到你已经安装python的文件夹中 - 这不是它应该如此。

此外,python在寻找python模块时不会查找python.exe的目录,它会查看$ PYTHONPATH(默认情况下,放入它的库文件夹中)和当前工作目录(这是您所在的目录在你叫python.exe,而不是其中 python.exe本身所在。

您还可以导入你的文件,如果你想用的东西从它,所以当一个交互的shell,你'd可能做

import my_python_file 

I th墨水你应该回到python.org并从头到尾阅读教程。它在处理文件,实际使用的模块以及如何使用其他文件的功能方面有很好的一面。

+0

我试过从some_class.py所在的文件夹中调用python.exe。然后我导入了我的文件,但在尝试实际使用该类时遇到了同样的错误。我也没有找到任何关于python.org上的模块理论的教程。作为@ padraic-cunningham建议实际工作,从shell外部启动文件。 – 2015-04-01 16:00:32

+0

Python的导入系统使用'sys.path',而不是'PYTHONPATH'。这个可选的环境变量只是扩展'sys.path'的许多方法之一。 – eryksun 2015-04-02 02:53:17