Я хочу создать setup.py, который установит мои файлы в пользовательские каталоги. У меня есть определенный префикс, где я хотел бы получить следующий результат:
/my/prefix/
bin/
script.sh
libexec/
one.py
two.py
...
lib/pythonX.Y/site-packages/
package/...
Мой первоначальный проект следующий:
/
script.sh
one.py
two.py
...
setup.py
package/...
__init__.py
...
Каким будет лучший способ достичь этого? Я хотел бы иметь возможность установить его позже с чем-то вроде:
python setup.py install --prefix=/my/prefix
Я могу получить "пакет", прекрасно установленный в правильном каталоге, поскольку lib/pythonX.Y/site-packages в разделе -prefix - это местоположение по умолчанию. Но есть ли чистый способ получить script.sh в "bin" и другие файлы python в "libexec"? Единственный способ добиться этого - это вручную скопировать эти файлы в мой setup.py script. Может быть, есть более чистый и более стандартный способ сделать это?
(редактировать)
Решение
Я закончил с setup.py как это:
setup(name='mylib',
scripts=['script.sh'],
data_files=[('libexec', ['one.py', 'two.py'])]
)
Конечно, вы можете перебирать все файлы python для libexec, но у меня есть только 2-3 файла python, которые мне нужны.
(edit2)
Кроме того, у меня может быть setup.cfg со следующим:
[install]
prefix=/my/prefix
и вместо python setup.py install --prefix=/my/prefix
я могу просто сделать:
python setup.py install