使用安装包后运行“chmod”`设置.py`

2024-09-29 01:28:33 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个包,它调用代码中某个可执行文件(例如第三方c/java程序)。让我们进一步假设,应用程序足够小/很小,可以与包捆绑在一起。例如单个可执行文件(cfoo)。在

我可以继续,将文件放入以下结构:

.
|-- foo
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- core.py
|   |-- corebin
|   |   `-- cfoo
|   `-- foomain.py
`-- setup.py

并准备setup.py如下:

^{pr2}$

这样我就可以正确安装软件包了。稍后,在包代码中我可以这样做:

from subprocess import call

import pkg_resources as res

def main():
    fn = res.resource_filename('foo', 'corebin/cfoo')
    print "Resource located at:", fn
    call([fn])

不幸的是,安装可执行文件时将不设置可执行标志。即使原始文件设置了它。在setup.py脚本的末尾添加一个chmod调用并不容易,因为需要先确定正确的安装路径。我试过使用resource_filename,但是返回了本地文件(如“pre-installation”)。在

这个问题怎么解决?同时考虑到virtualenv。。。在


Tags: 文件代码pyimport可执行文件fooinitsetup
1条回答
网友
1楼 · 发布于 2024-09-29 01:28:33

我想把我的评论变成一个答案:

如果使用scripts关键字安装它,它将获得正确的模式(并安装在适当的bin/目录中)。在

How would you execute something on files contained inside a package after install?

This question似乎解决了相同的情况,而且它似乎有一个合理的答案。在

相关问题 更多 >