我想创建一个 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
我可以将“包”很好地安装在正确的目录中,因为 --prefix 下的 lib/pythonX.Y/site-packages 是默认位置。但是有没有一种干净的方法可以将 script.sh 放入“bin”,将其他 python 文件放入“libexec”?我认为实现这一目标的唯一方法是在我的 setup.py 脚本中手动复制这些文件。也许有一种更清洁、更标准的方法来做到这一点?
(编辑)
解决方案
我最终得到了这样的 setup.py:
setup(name='mylib',
scripts=['script.sh'],
data_files=[('libexec', ['one.py', 'two.py'])]
)
当然,您可以为 libexec 遍历所有 python 文件,但我只需要 2-3 个 python 文件。
(编辑2)
此外,我可以使用以下内容设置 setup.cfg:
[install]
prefix=/my/prefix
而不是python setup.py install --prefix=/my/prefix
我可以这样做:
python setup.py install