I am trying to distribute a mplstyle I wrote such that I can share it easily. It boils down to copying a text file to the proper configuration direction (which is known for any architecture) during installation. I want to be able to install using either python setup.py install or pip install .... Currently I do not seem to get either of the two ways robust (see current approach below).
- Installing with 
pip install ...does not seem to invoke the copying at all. Installing with
python setup.py installworks well on my machine, but ReadTheDocs gives me the following error:python setup.py install --force running install error: [Errno 2] No such file or directory: u'/home/docs/.config/matplotlib/stylelib/goose.mplsty
What is the proper way to copy configuration files during installation in a robust way?
Current approach
File structure
setup.py
goosempl/
| __init__.py
| stylelib/
  | goose.mplstyle
  | ...
setup.py
from setuptools                 import setup
from setuptools.command.install import install
class PostInstallCommand(install):
  def run(self):
    import goosempl
    goosempl.copy_style()
    install.run(self)
setup(
  name              = 'goosempl',
  ...,
  install_requires  = ['matplotlib>=2.0.0'],
  packages          = ['goosempl'],
  cmdclass          = {'install': PostInstallCommand},
  package_data      = {'goosempl/stylelib':['goosempl/stylelib/goose.mplstyle']},
)
goosempl/__init__.py
def copy_style():
  import os
  import matplotlib
  from pkg_resources import resource_string
  files = [
    'stylelib/goose.mplstyle',
  ]
  for fname in files:
    path = os.path.join(matplotlib.get_configdir(),fname)
    text = resource_string(__name__,fname).decode()
    print(path, text)
    open(path,'w').write(text)
Upload to PyPi
python setup.py bdist_wheel --universal
twine upload dist/*