gpt4 book ai didi

python - 如何使用可以访问 R 脚本的 pip 安装包

转载 作者:行者123 更新时间:2023-12-01 01:54:30 25 4
gpt4 key购买 nike

问题

我需要创建一个可以访问 R 脚本并使其可 pip 安装的 python 包

设置:

我的包结构如下

foo/  
setup.py
foo/
foo.R

setup.py的内容是:

from setuptools import setup, find_packages

setup(
name='foo',
packages=find_packages(),
scripts=['foo/foo.R'],
zip_safe=False,
)

并且foo.R的内容是:

#!/usr/bin/env Rscript

R.version

我正在安装此软件包:
pip install -e

当我查看安装的 R 脚本时,它不再是 R 脚本,因此当调用它时,它正在作为 python 运行,因此失败

$ cat $(which foo.R)查看文件内容

我的期望:

#!/usr/bin/env Rscript

R.version

我得到什么:

#!/Users/jc33/miniconda3/bin/python
# EASY-INSTALL-DEV-SCRIPT: 'foo==0.0.0','foo.R'
__requires__ = 'foo==0.0.0'
__import__('pkg_resources').require('foo==0.0.0')
__file__ = '/Users/jc33/Desktop/foo/foo/foo.R'
exec(compile(open(__file__).read(), __file__, 'exec'))

额外范围

这是一个非常人为的示例,创建的唯一目的是寻找解决方案,而不是讨论使用 setuptools 定位 R 脚本的优 pip 。有关更多信息,我正在创建一个更复杂的 python 包,类似于 this在某些时候需要调用 R,这是通过 subprocess.run 完成的,但我认为这超出了这个问题的范围

Python=='3.5.2'
setuptools=='27.2.0'
pip=='10.0.1

最佳答案

发生这种情况是因为您的 R 脚本与 Python 不够相似。

如果您要放置一些导致语法错误的 R 代码,例如前导 .$foo[[0]] 的任何用法 你会发现 setuptools(但实际上是 distutils+easy_install)不会生成 develop 包装器。

可以找到控制脚本包装器的源代码 here 。它使用 is_python_script 进行测试调用 is_python 。这反过来只是编译文件。成功的编译返回 True 并导致 easy_install 生成包装器脚本,不成功的编译返回 False 并且文件只是逐字复制(这就是您想要的)。

关于python - 如何使用可以访问 R 脚本的 pip 安装包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50378639/

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