从壳牌
所以我有一些被命名的脚本“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。我究竟做错了什么?
如果你想使用文件名来运行它,那么不要从cmd提示符启动一个python shell,只需python34 some_class.py
。 if __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并从头到尾阅读教程。它在处理文件,实际使用的模块以及如何使用其他文件的功能方面有很好的一面。
我试过从some_class.py所在的文件夹中调用python.exe。然后我导入了我的文件,但在尝试实际使用该类时遇到了同样的错误。我也没有找到任何关于python.org上的模块理论的教程。作为@ padraic-cunningham建议实际工作,从shell外部启动文件。 – 2015-04-01 16:00:32
Python的导入系统使用'sys.path',而不是'PYTHONPATH'。这个可选的环境变量只是扩展'sys.path'的许多方法之一。 – eryksun 2015-04-02 02:53:17
尝试使用“python some_class.py”。 – wshcdr 2015-04-01 10:31:43