【发布时间】:2019-08-31 12:16:13
【问题描述】:
我有一个 R 脚本,可以在带有Rscript app/myapp.R 的终端中执行。 R 脚本存储在 R 包项目中,因此我可以从文档、检查和单元测试工具中受益。
只是为了用户友好,我想知道是否有一种方法可以模仿 python 在模块内 __main__.py 的行为。
编辑 6/1/2020:我实际上需要其他不习惯 R 的用户来使用该脚本。因此,一旦安装了软件包,查找脚本的完整路径对他们来说并不是一个真正的选择。
在一个python项目中,当我有以下包结构时:
mypackage
├── mymodule
│ ├── __init__.py
│ └── __main__.py
└── setup.py
我可以在终端中的任何文件夹中执行python -m mymodule ,前提是该软件包确实安装在我的 python 库中。该命令将执行mypackage/mymodule/__main__.py。
我希望 R 包具有相同的行为。假设 R 包 mypackage 已经安装在我的 R 用户库中。我希望能够在终端的任何地方运行mypackage/app/myapp.R(实际上,我希望其他人能够安装软件包并运行应用程序而无需克隆存储库)。
我知道我能做到
Rscript app/myapp.R
但这只有在我将cd 转换为path/to/mypackage 时才有效。如果软件包安装在 R 用户的库中,我希望能够从终端中的任何位置执行类似下面的操作。
Rscript -m myapp
demo() 似乎是为交互式会话制作的,我需要一个非交互式会话。
【问题讨论】:
-
很有可能会出现同时了解 R 和 python 的人。但是这个问题已经在这里 7 个小时没有答案了,所以你应该考虑详细描述它的确切含义:“模仿 python 在模块内的 main.py 的行为” ,以及为什么添加到
myapp.r的完整路径不能令人满意。 -
谢谢,我编辑了问题,在最初的问题下方添加了一个详细的问题
-
@Romain 看看这个:github.com/klmr/modules.
标签: python r r-package python-packaging