假设我有一个包,它调用代码中某个可执行文件(例如第三方c/java程序)。让我们进一步假设,应用程序足够小/很小,可以与包捆绑在一起。例如单个可执行文件(cfoo
)。在
我可以继续,将文件放入以下结构:
.
|-- foo
| |-- __init__.py
| |-- __init__.pyc
| |-- core.py
| |-- corebin
| | `-- cfoo
| `-- foomain.py
`-- setup.py
并准备setup.py
如下:
这样我就可以正确安装软件包了。稍后,在包代码中我可以这样做:
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
。。。在
我想把我的评论变成一个答案:
如果使用
scripts
关键字安装它,它将获得正确的模式(并安装在适当的bin/目录中)。在This question似乎解决了相同的情况,而且它似乎有一个合理的答案。在
相关问题 更多 >
编程相关推荐