setup.py not installing data files

distutils, python, python-2.7

Solution

http://docs.python.org/distutils/setupscript.html#installing-additional-files

If directory is a relative path, it is interpreted relative to the installation prefix (Python’s sys.prefix for pure-Python packages, sys.exec_prefix for packages that contain extension modules).

This will probably do it:

data_files   = [ ("my_module",  ["local/lib/python2.7/dist-package/my_module/data1",
                                 "local/lib/python2.7/dist-package/my_module/data2"])]

Or just use join to add the prefix:

data_dir = os.path.join(sys.prefix, "local/lib/python2.7/dist-package/my_module")
data_files   = [ ("my_module",  [os.path.join(data_dir, "data1"),
                                 os.path.join(data_dir, "data2")])]

Problem

I have a Python library that, in addition to regular Python modules, has some data files that need to go in /usr/local/lib/python2.7/dist-package/mylibrary. Unfortunately, I have been unable to convince setup.py to actually install the data files there. Note that this behaviour is under install - not sdist. Here is a slightly redacted version of setup.py ``` module_list = list_of_files setup(name ='Modules', version ='1.33.7', description ='My Sweet Module', author ='PN', author_email ='email', url ='url', packages = ['my_module'], # I tried this. It got installed in /usr/my_module. Not ok. # data_files = [ ("my_module", ["my_module/data1", # "my_module/data2"])] # This doesn't install it at all. package_data = {"my_module" : ["my_module/data1", "my_module/data2"] } ) ``` This is in Python 2.7 (will have to run in 2.6 eventually), and will have to run on some Ubuntu between 10.04 and 12+. Developing it right now on 12.04.

Original source

Related problems