gpt4 book ai didi

python - 使用 `chmod` 安装包后运行 `setup.py`

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:36 30 4
gpt4 key购买 nike

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

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

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

并准备一个setup.py如下:

from setuptools import setup

setup(
name='foo',
version='1.0',
packages=['foo'],
scripts=['foo/foomain.py'],
package_data={'foo': ['corebin/*']},
zip_safe=False
)

这将使我能够正确安装包。后来,在包代码中我可以这样做:

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 但它返回了本地文件(如“预安装”)。

如何解决这个问题?还要考虑到 virtualenv...

最佳答案

我正在将我的评论提升为一个答案:

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

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

This question似乎可以解决相同的情况,而且看起来它有一个合理的答案。

关于python - 使用 `chmod` 安装包后运行 `setup.py`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8037205/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com