首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于在自定义目录中安装文件的python setup.py配置

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

Stack Overflow用户
提问于 2012-05-05 01:57:03
回答 1查看 18.1K关注 0票数 17

我想要创建一个setup.py,它将我的文件安装到自定义目录中。我有一个前缀,希望得到以下结果:

代码语言:javascript
复制
/my/prefix/
  bin/
    script.sh
  libexec/
    one.py
    two.py
    ...
  lib/pythonX.Y/site-packages/
    package/...

我的初步项目如下:

代码语言:javascript
复制
/
  script.sh
  one.py
  two.py
  ...
  setup.py
  package/...
    __init__.py
    ...

实现这一目标的最佳途径是什么?我希望以后能够用如下方式安装它:

代码语言:javascript
复制
python setup.py install --prefix=/my/prefix

我可以在正确的目录中很好地安装"package“,因为lib/pythonX.Y/site--前缀下的包是默认位置。但是有没有一种干净的方法可以让script.sh进入"bin“和其他python文件到"libexec”中呢?实现这一目标的唯一方法是在我的setup.py脚本中手动复制这些文件。也许有一种更清洁、更标准的方法来做到这一点吗?

(编辑)

溶液

最后我得到了这样的setup.py:

代码语言:javascript
复制
setup(name='mylib',
  scripts=['script.sh'],
  data_files=[('libexec', ['one.py', 'two.py'])]
)

当然,您可以迭代libexec的所有python文件,但是我只需要2-3个python文件。

(edit2)

此外,我可以使用下面的setup.cfg:

代码语言:javascript
复制
[install]
prefix=/my/prefix

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

代码语言:javascript
复制
python setup.py install
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-05 03:35:28

脚本通过使用安装函数的scripts参数来处理。对于libexec,您可以将它们视为数据文件,并使用数据选项。

代码语言:javascript
复制
setup(...
    scripts=glob("bin/*"),
    data_files=[(os.path.join(sys.prefix, 'libexec', 'mypackage'), glob("libexec/*"))],
    ...
)

我不知道如何使用--prefix选项,我从未尝试过。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10458158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档