I have created a simple python program whih I want to package and distribute so other people can easily install and use. First I wanted to make a stand-alone executable zip but couldn't do that since my program depends on external resource files which I was unable to reference using the zip method.
Then I decided to create a .deb package but I have found every guide and tutorial to be way too complex or not do a good enough job except this answer which helped me successfully create a deb package only to produce the following error on installing:

The package is of bad quality

Lintian check results for /home/logi/repos/testindicator/build.deb: E: testindicator: non-standard-toplevel-dir testindicator/

So my question is how can I package my python app simply so it can be installed/run easily on other computers? and does that mean I will have to sacrifice my project structure?

This is my project structure which I think is pretty standard for a python project:

├── build
├── dist
├── indicator
├── __main__.py
├── paths.py
├── README.md
├── res
├── tests
└── usr
  • 1
    It may be wiser to package it using setuptools and ask the user to use pip. Nevertheless, that answer is from 2011, the debian template file looks quite different now – grochmal Sep 2 '16 at 22:16
  • Thanks for the tip but I find setuptools hard to understand for this particular task. I'm not trying to distribute a standard python library but an application which should have a .desktop file and be executable from command line. I have found another resource which seems to describe the process I need and looks up-to-date. – user193241 Sep 3 '16 at 13:53
  • I am just really puzzled how hard it was to find a good guide like that for such a seemingly simple and common task. – user193241 Sep 3 '16 at 13:54
  • I need to argue that: (1) setuptools is much simpler than the .deb simply because it is much more relaxed about dependencies. (2) the link in my comment is a guide on how to build a .deb. (3) packaging software is not a trivial task, that is because you need to understand the dependency tree of packages if you want to do it well. – grochmal Sep 3 '16 at 16:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.