R 相当于 python -m 模块用于 R 包
R equivalent of python -m module for an R package
我有一个 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
命令而不是 Rscript
有一个非常简单的解决方案。只需将脚本包装在包中的一个函数中,然后使用 :
R -e "mypackage::myfunc()"
我有一个 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
命令而不是 Rscript
有一个非常简单的解决方案。只需将脚本包装在包中的一个函数中,然后使用 :
R -e "mypackage::myfunc()"