12
votes

I have two computers with Windows, and I just found that on one of them, if I ran python code directly, like:

test_args.py input1 input2

Python will not recognized the input I gave, but this works:

python test_args.py input1 input2

I tried the code:

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)

And the first way(test_args.py input1 input2) returns:

Number of arguments: 1 arguments.
Argument List: ['D:\\Test\\args\\test_args.py']

While the sceond way (python test_args.py input1 input2) returns:

Number of arguments: 3 arguments.
Argument List: ['D:\\Test\\args\\test_args.py', 'input1', 'input2']

Any idea on what this could happen? This issue only happens in one of my computers, both have same version of Windows.

Thanks!

SOLVED:

I search in regedit keyword "python" and found two keys missing %* after "C:\Python27\python.exe" "%1":

Computer\HKEY_CLASSES_ROOT\Applications\python.exe

Computer\HKEY_CLASSES_ROOT\py_auto_file\shell\open\command

And .py is associated with py_auto_file even though I tried assoc .py Python.File

Changing the two keys fixed this issue, thanks!

1
maybe you have different versions of python installed in both. Try running python -V to confirm the version numbers. - Ashoka Lella
Somehow you lost the proper file association. The default for Python 2.7 is assoc .py=Python.File and ftype Python.File="C:\Python27\python.exe" "%1" %*. - Eryk Sun
assoc .py=Python.File did not change the association of .py for some reason. Just found out that the value of .py under HKEY_CLASSES_ROOT\.py is py_auto_file for some reason. Changing the value in py_auto_file solve this issue, thanks! - Zewei Song
HKCR is a merged view of HKLM\Software\Classes (local machine) and HKCU\Software\Classes (user). The user settings in the HKCU hive takes precedence in the merged view. But the cmd shell's assoc and ftype commands only edit the HKLM settings. - Eryk Sun
Yes, py_auto_file and pyw_auto_file are the culprits. I just did an anaconda install on a brand new Windows 8 machine. Setting all the assoc and ftype values didn't work, but after fixing these two values everything is good. - Janus

1 Answers

1
votes

Check what is the association of *.py files on these two computers. The script may be executed by different Python interpreters.