Packaging a private project

N

Nicholas Cole

Dear List,

What is the best way to distribute a private, pure python, Python 3
project that needs several modules (some available on pypi but some
private and used by several separate projects) in order to run?

I'd like to include everything that my project needs to run in a
single package. The best way to do this seems to be to be to create
symlinks to the source code of the "3rd party" modules I need and
create a setup.py file that includes them in its "packages" list. Is
this what other people do?

But even more ideally, I'd like to package my script and its
dependencies in a single zip file that can be executed by python
directly. I see several declarations that this is possible online,
but I can't find a simple recipe for converting a script and its
dependencies into this kind of distribution. Could someone give me a
pointer to a description of "the right way to do it".

I'm making life harder for myself by using python 3 (PyInstaller still
only supports Python 2) and by the fact that I can't release some of
the necessary code publicly. Releasing modules and scripts on pypi
has become very easy -- I'd forgotten how hard packaging private code
is!

Thank you for any help.

N.
 
T

Thomas Heller

Am 16.12.2013 12:18, schrieb Nicholas Cole:
Dear List,

What is the best way to distribute a private, pure python, Python 3
project that needs several modules (some available on pypi but some
private and used by several separate projects) in order to run?

I'd like to include everything that my project needs to run in a
single package. The best way to do this seems to be to be to create
symlinks to the source code of the "3rd party" modules I need and
create a setup.py file that includes them in its "packages" list. Is
this what other people do?

But even more ideally, I'd like to package my script and its
dependencies in a single zip file that can be executed by python
directly. I see several declarations that this is possible online,
but I can't find a simple recipe for converting a script and its
dependencies into this kind of distribution. Could someone give me a
pointer to a description of "the right way to do it".

I'm making life harder for myself by using python 3 (PyInstaller still
only supports Python 2) and by the fact that I can't release some of
the necessary code publicly. Releasing modules and scripts on pypi
has become very easy -- I'd forgotten how hard packaging private code
is!

Well, pyzzer comes to mind (you find it on pypi). It creates an
executable zip-archive containing all the stuff that you need (at least
the pure python modules).

The problem remains: how to find all the modules and packages that need
to be included?

Python's modulefinder can do this for you. If you want to live on the
cutting edge you could try the new one that I've written for Python3.
It currently lives in

http://code.google.com/p/ctypes-stuff/source/browse/trunk/mf/py2exe/mf3.py

It has several advantages against the standard library's modulefinder;
for example it finds and is able to extract the bytecode even from
zipped eggs.
For examples how it can be used, you could peek into the runtime.py
module in the same directory, method build_library of class Runtime.

I guess for an experienced developer it takes around one day to take
these pieces and build a script that scans a python script, finds all
the needed modules and packages, and uses pyzzer to build an executable
archive from it.

Thomas
 

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
473,967
Messages
2,570,148
Members
46,694
Latest member
LetaCadwal

Latest Threads

Top