繁体   English   中英

python setup.py 配置在自定义目录中安装文件

[英]python setup.py configuration to install files in custom directories

我想创建一个 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函数的scripts参数来处理scripts 对于libexec,您可以将它们视为数据文件并使用数据选项。

setup(...
    scripts=glob("bin/*"),
    data_files=[(os.path.join(sys.prefix, 'libexec', 'mypackage'), glob("libexec/*"))],
    ...
)

我不确定如何使用--prefix选项,我从来没有尝试过。

我最终得到了这样的setup.py

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

当然,您可以为 libexec 遍历所有 python 个文件,但我只需要 2-3 个 python 个文件。


此外,我可以使用以下内容设置setup.cfg

[install]
prefix=/my/prefix

而不是python setup.py install --prefix=/my/prefix我可以这样做:

python setup.py install

该答案作为对问题python setup.py 配置的编辑(编辑 1编辑 2 )发布,以在 CC BY-SA 3.0 下由 OP Ago在自定义目录中安装文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM