如何将我的python模块包装在tar中?

时间:2016-07-05 20:02:47

标签: python-2.7

我创建了一个简单的__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像拉链一样识别它?

1 个答案:

答案 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行,但它不是有效的语法。

找到文件名,然后是许多奇怪的不可打印字符,然后是printtest_tar.py看起来像一个模块名称(和返回值的语句),所以它没问题。但

test_tar.py print 'blah' 

根本不是有效的Python。