无法使用 Canopy 运行 简单的 "if__name__ =='__main__':" 语法

Unable to run simple "if__name__ =='__main__':" syntax using Canopy

我从 Internet 获得了以下密码生成器 (Test.py),我认为在 Canopy 中 运行 很容易,但它似乎根本不起作用。

我总是收到无效的语法错误。我将代码发送给了我的一位同事,她说在她的 Linux 机器上使用简单的 i-Python 终端就可以正常工作。

#!/usr/bin/env python
import random
import sys
import string


def main(argv):

    if (len(sys.argv) != 5):
        sys.exit('Usage: simple_pass.py <upper_case> <lower_case> <digit> <special_characters>')

    password = ''

    for i in range(len(argv)):
        for j in range(int(argv[i])):
            if i == 0:
                password += string.uppercase[random.randint(0,len(string.uppercase)-1)]
            elif i == 1:
                password += string.lowercase[random.randint(0,len(string.lowercase)-1)]
            elif i == 2:
                password += string.digits[random.randint(0,len(string.digits)-1)]
            elif i == 3:
                password += string.punctuation[random.randint(0,len(string.punctuation)-1)]

    print 'Your new password is: ' + ''.join(random.sample(password,len(password)))

if __name__ == "__main__":
    main(sys.argv[1:])

我试过了:

$python Test.py 2 2 2 2

我也试过使用整个路径名,但似乎没有任何效果!我很沮丧,因为这似乎很容易。任何帮助将不胜感激。

我的猜测是您 运行 在 ipython

中执行此命令
$ python Test.py 2 2 2 2

如果您在命令行中,您将如何 运行 脚本,并且返回错误:

In [1]: python Test.py 2 2 2 2
  File "<ipython-input-3-5bade39d33f0>", line 1
    python Test.py 2 2 2 2
                                           ^
SyntaxError: invalid syntax

如果你想 运行 它在 Canopy 中(这是一个 ipython shell,而不是终端 window),运行 文件像这样

In [1]: %run Test.py 2 2 2 2
Your new password is: NDt1q.+1