mrstephengross wrote: > I would like to distribute a python program, but only in .pyc form (so > that people cannot simply look at my code). Is there a way to do this? > I've read up a little on the logic by which python creates .pyc's, and > it sounds like python requires the main executed program to be in .py > format. Any ideas? >
If your main program is in main.py, you could perhaps launch it with python -c "import main", or make another file which just does import main. Then you could keep just the .pycs/.pyos. But it's possible for a determined user to recover a lot of information about the source code. For example, if I write def foo(a): for i in range(a): print i then >>> dis.dis(foo) 2 0 SETUP_LOOP 25 (to 28) 3 LOAD_GLOBAL 0 (range) 6 LOAD_FAST 0 (a) 9 CALL_FUNCTION 1 12 GET_ITER >> 13 FOR_ITER 11 (to 27) 16 STORE_FAST 1 (i) 3 19 LOAD_FAST 1 (i) 22 PRINT_ITEM 23 PRINT_NEWLINE 24 JUMP_ABSOLUTE 13 >> 27 POP_BLOCK >> 28 LOAD_CONST 0 (None) 31 RETURN_VALUE where 0..12 makes an iterator for range(a), 16..19 updates i and 22..23 prints it out. It would be possible to turn it into equivalent source code. Decompyle (from http://ftp.debian.org/debian/pool/main/d/decompyle/decompyle_2.3.2.orig.tar.gz) can even do that. -- http://mail.python.org/mailman/listinfo/python-list