开发者

run python module without the pyc extension

I have a compi开发者_运维百科led Python 2.6 program on Linux called abc.pyc. If I run

./abc.pyc

it runs fine. However if I rename it to abc (i.e, without the pyc extension) it fails to run. It gives the error message:

ImportError: No module named abc

How can I run my program without the .pyc extension?

UPDATED: I want to run the compiled (pyc) version not the py version

Alternatively, I know I can compile modules to .so files using Cython, but can I compile my main Python program to something I can execute on a Linux platform? If so, a Cython command line example would be appreciated.

UPDATED I've raised the Cython question as a separate question.


Create a file named 'abc' which contains:

#!/bin/sh
/usr/bin/env python -m abc

or is that giving away too much valuable source code if they can read that?

Note also that .pyc files aren't portable between different versions of Python. Redistributing the source really would be best for that reason quite apart from causing less annoyance to your users and less cost to yourself (in support time if nothing else).


Don't rename the .pyc file - that is just a shortcut for the interpreter, so that it doesn't have to recompile already compiled code.

Instead, rename the .py file to abc, chmod +x ./abc and make sure the first line reads:

#!/usr/bin/python

or even

#!/usr/bin/env python

From your explanation of the problem, I guess the .pyc file contains some linux loadable code that lets it be run as a binary, providing it can check the .py file for newer versions - and probably just starts the python interpreter to load itself or the source file (whichever is newer) and then go on with that. Who knows? Maybe the os specific docs will tell you. Maybe they won't.


If you're looking to obfuscate your code, see this discussion on protecting Python code. Basically, you can't wantonly distribute the Python bytecode which comprises the .pyc file, and there's no way to prevent people from peeking into your code.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜