настройка python setup.py для установки файлов в пользовательские каталоги

Я хочу создать файл setup.py, который установит мои файлы в пользовательские каталоги. У меня есть определенный префикс, где я хотел бы получить следующий результат:

<code>/my/prefix/
  bin/
    script.sh
  libexec/
    one.py
    two.py
    ...
  lib/pythonX.Y/site-packages/
    package/...
</code>

Мой начальный проект следующий:

<code>/
  script.sh
  one.py
  two.py
  ...
  setup.py
  package/...
    __init__.py
    ...
</code>

Каков наилучший способ добиться этого? Я хотел бы иметь возможность установить его позже с чем-то вроде:

<code>python setup.py install --prefix=/my/prefix
</code>

Я могу получить "пакет" красиво установлен в правильном каталоге, так как lib / pythonX.Y / site-packages в --prefix является местоположением по умолчанию. Но есть ли чистый способ получить script.sh в & quot; bin & quot; и другие файлы Python в "libexec"? Единственный способ добиться этого - вручную скопировать эти файлы в мой скрипт setup.py. Может быть, есть более чистый и более стандартный способ сделать это?

(редактировать)

Solution

Я закончил с setup.py вот так:

<code>setup(name='mylib',
  scripts=['script.sh'],
  data_files=[('libexec', ['one.py', 'two.py'])]
)
</code>

Конечно, вы можете перебрать все файлы Python для libexec, но у меня есть только 2-3 файла Python, которые мне нужны.

(Edit2)

Кроме того, у меня может быть файл setup.cfg со следующим:

<code>[install]
prefix=/my/prefix
</code>

и вместоpython setup.py install --prefix=/my/prefix Я могу просто сделать:

<code>python setup.py install
</code>

Ответы на вопрос(1)

Ваш ответ на вопрос