我想将安全参数传递给shinyapps.io部署,以便我的应用程序可以通过以下方式获取它们:
distdf1.apply(lambda x: haversine(x['SLongitude'], x['SLatitude'], x['ClosestLong'], x['ClosestLat']), axis=1)
我在Sys.getenv('PASSWORD_X')
包中的deployApp
函数中找不到任何内容。
答案 0 :(得分:11)
您可以使用 Renviron.site 或 .Renviron 将私有数据存储和访问闪亮的应用程序。 (see here for Hadley Wickham's recommendations and instructions - ref example below)。
如果您的软件包支持基于API密钥或令牌的身份验证工作流,请鼓励用户将其存储在环境变量中。我们使用github R包来说明这一点,它包装了Github v3 API。将此模板定制到您的API +包并包含在README.md或插图中。
创建一个这样的行:
GITHUB_PAT = blahblahblahblahblahblah
其中名称GITHUB_PAT
会提醒您这是哪个API,blahblahblahblahblahblah
是您的个人访问令牌,从剪贴板粘贴。
确保文件中的最后一行为空(如果不是R将无声地加载文件。如果您使用的是显示行号的编辑器,则应该有两行,其中第二个是空的。
使用文件名.Renviron保存在主目录中。如果被质疑, 是的,你确实想使用以点开头的文件名..
重新启动R. .Renviron仅在R会话开始时处理。
使用Sys.getenv()访问您的令牌。例如,以下是如何将GITHUB_PAT与github包一起使用:
library(github)
ctx <- create.github.context(access_token = Sys.getenv("GITHUB_PAT"))
# ... proceed to use other package functions to open issues, etc.
常见问题解答:为什么要通过.Renviron而不是.bash_profile或.bashrc来定义这个环境变量?
因为有很多OS的组合和运行R的方式,其中.Renviron方法“正常工作”而bash的东西没有。当R是Emacs或RStudio的子进程时,你不能总是依赖于传递给R的环境变量。将它们放在一个特定于R的启动文件中并为自己省去一些悲伤。