我创建了一个简单的__main__.py
:
if __name__ == '__main__':
print 'the rain in Spain falls mainly on the plane'
我可以使用__main__.py
zip -r test.zip __main__.py
的zip
现在我可以打电话给test.zip:
$ python test.zip
the rain in spain falls mainly on the plane
使用命令__main__.py
tar -cf test.tar __main__.py
的tar时
当我打电话给我时,我得到以下内容。
$python test.tar
File "test.tar", line 1
__main__.py print 'the rain in spain falls mainly on the plane'
^
SyntaxError: invalid syntax
我需要做些什么让python像拉链一样识别它?
答案 0 :(得分:1)
我认为你不能使用tar
作为Python。我从来没有听说过能够运行压缩的Python文件,但没关系。
这是你的tarred文件:
00000000: 7465 7374 5f74 6172 2e70 7900 0000 0000 test_tar.py.....
00000010: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000060: 0000 0000 3030 3030 3634 3400 3030 3031 ....0000644.0001
00000070: 3735 3000 3030 3031 3735 3000 3030 3030 750.0001750.0000
00000080: 3030 3030 3132 3400 3132 3733 3730 3137 0000124.12737017
00000090: 3634 3600 3031 3133 3637 0020 3000 0000 646.011367. 0...
000000a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000000b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000000d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000000e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000000f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000100: 0075 7374 6172 2020 0063 6174 0000 0000 .ustar .cat....
00000110: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000120: 0000 0000 0000 0000 0063 6174 0000 0000 .........cat....
00000130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000150: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000170: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000180: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000190: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000001a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000001b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000001c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000001d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000001e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000001f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000200: 6966 205f 5f6e 616d 655f 5f20 3d3d 2027 if __name__ == '
00000210: 5f5f 6d61 696e 5f5f 273a 0a20 2020 2070 __main__':. p
00000220: 7269 6e74 2027 7468 6520 7261 696e 2069 rint 'the rain i
00000230: 6e20 5370 6169 6e20 6661 6c6c 7320 6d61 n Spain falls ma
00000240: 696e 6c79 206f 6e20 7468 6520 706c 616e inly on the plan
00000250: 6527 0a0a 0000 0000 0000 0000 0000 0000 e'..............
00000260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000290: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000002a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000002b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000002c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000002d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000002e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000002f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000300: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
它以大约9K的空字节结束,因此这只是xxd
的前50行,但它不是有效的语法。
找到文件名,然后是许多奇怪的不可打印字符,然后是print
。 test_tar.py
看起来像一个模块名称(和返回值的语句),所以它没问题。但
test_tar.py print 'blah'
根本不是有效的Python。