should I distribute .pyc files?

A

akbar

Hi,

I am creating not-so-important opensource application written in python
for Linux. I have two files python source in src directory, named
blabla1.py and blabla2.py. There are byte compiled files too, named
blabla1.pyc and blabla2.pyc. Should I distribute these files (pyc
files) to users? If I don't distribute them, and user installed my
application into /usr (not writable by normal user) then run it as
normal user, off course, the python cannot make byte-compiled version.
Will my program runs slower in user computer then in my computer
because I have byte compiled version?

Thank you.
 
D

Duncan Booth

akbar said:
I am creating not-so-important opensource application written in python
for Linux. I have two files python source in src directory, named
blabla1.py and blabla2.py. There are byte compiled files too, named
blabla1.pyc and blabla2.pyc. Should I distribute these files (pyc
files) to users? If I don't distribute them, and user installed my
application into /usr (not writable by normal user) then run it as
normal user, off course, the python cannot make byte-compiled version.
Will my program runs slower in user computer then in my computer
because I have byte compiled version?

Short answer: use distutils or build a python egg. These will automate most
of the distribution process.

Longer answer:

distutils (standard in Python) will build you a variety of installation
packages such as zip, tar, rpm, or windows .exe (even from linux). The
installation step will do all necessary compiling from .py to .pyc (and
also builds extension modules although that can be problematic for a
windows distribution where the correct compiler almost certainly isn't
available).

setuptools (http://cheeseshop.python.org/pypi/setuptools) is a collection
of enhancements to distutils which let you build .egg files. Once you start
using egg files you can include dependencies between package versions and
if your product requires a bunch of other packages the installation step
will download and install the appropriate versions.

See http://peak.telecommunity.com/DevCenter/EasyInstall for instructions on
installing packages built in this way, but in short, the user has to run
ez_setup.py from the EasyInstall page, and then a command like:

easy_install http://example.com/path/to/MyPackage-1.2.3.tgz

would download and install your package and all the other products it
depends on. If at a later stage they want to upgrade to a more recent
version then all they need to do is to run:

easy_install --upgrade MyPackage

Installed eggs usually exist in a single file (importable zip) which makes
uninstalling especially easy: just one file to delete.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,261
Messages
2,571,040
Members
48,769
Latest member
Clifft

Latest Threads

Top