我正在使用 Docker 将 Django 应用程序部署到 Heroku。当我放入RUN manage.py collectstatic --noinputDockerfile 时,它失败了,因为没有为环境变量设置值DJANGO_SECRET_KEY。我的理解是,这是因为在构建期间配置变量不可用。
当我将 collectstatic 作为发布命令运行时,它可以正常工作,并成功复制静态文件。但是,当我点击应用程序 url 时,它返回 500 错误,因为找不到静态文件。我相信这是因为 release 命令在临时文件系统上作为 dyno 运行,因此找不到复制的文件。
这似乎是一个catch-22。将 collectstatic 放入 Dockerfile 失败,因为没有可用的配置变量,但将其作为发布命令失败,因为只保存了构建阶段的文件更改?
该怎么办?
这是我在 settings.py 中的 collectstatic 设置
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
...
]
...
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
STATICFILES_STORAGE = 'backend.storage.WhiteNoiseStaticFilesStorage'
Run Code Online (Sandbox Code Playgroud)
文件
# Pull base image
FROM python:3.7-slim
# Set environment varibles
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Set work …Run Code Online (Sandbox Code Playgroud) 我希望能够打印通过管道传递的数据帧的名称.这可能吗?我可以.
printname <- function(df){
print(paste(substitute(df)))
}
printname(mtcars)
#[1] "mtcars"
Run Code Online (Sandbox Code Playgroud)
但是,它返回"." 当使用管道管道此功能时magrittr.
mtcars %>% printname
# [1] "."
Run Code Online (Sandbox Code Playgroud)
在编写已记录的生产过程中使用的函数的自定义错误消息时,这将非常有用 - 如果日志中唯一的内容是".",则很难知道哪些内容失败了.
它可能足以返回原始调用,其中包括该mtcars %>%部分.
我经常发现自己使用dplyr在R中计算摘要统计信息,然后将结果写入csv并将其加载到Tableau中以生成表格,因为Tableau的表格非常简单易用.我宁愿直接在R中生成表格.
R中的分组表有一个简单的解决方案吗?
生成我想要的数据非常容易:
library(tidyr)
library(dplyr)
summary_table <- iris %>%
gather(measure, value, -Species) %>%
separate(measure, into=c("attribute", "dimension")) %>%
group_by(Species, attribute, dimension) %>%
summarise(mean=mean(value))
summary_table
Source: local data frame [12 x 4]
Groups: Species, attribute [?]
Species attribute dimension mean
<fctr> <chr> <chr> <dbl>
1 setosa Petal Length 1.462
2 setosa Petal Width 0.246
3 setosa Sepal Length 5.006
4 setosa Sepal Width 3.428
5 versicolor Petal Length 4.260
6 versicolor Petal Width 1.326
7 versicolor Sepal Length 5.936
8 versicolor Sepal …Run Code Online (Sandbox Code Playgroud) Blastula 似乎不尊重表格格式化包(如和 )<style>使用的标签。kableextraformattable
例子:
library(kableExtra)
library(blastula)
dt <- mtcars[1:5, 1:6]
tbl <- dt %>%
kbl() %>%
kable_styling()
tbl
compose_email(
body = md(c(
"this is my table:",
tbl
)))
Run Code Online (Sandbox Code Playgroud)
打印 tbl 时显示此内容
但是打印的时候是这样compose_email
我认为这是因为blastula只是打印表格,并且kableextra格式在其他地方使用class:
tbl <- dt %>%
kbl("html")
tbl_styled <- tbl %>%
kable_styling()
as.character(tbl)
as.character(tbl_styled)
Run Code Online (Sandbox Code Playgroud)
这表明打印样式表时唯一的区别是标签<table>:
<table class=\"table\" style=\"margin-left: auto; margin-right: auto;\">
Run Code Online (Sandbox Code Playgroud)
所以我想唯一的方法是编写我们自己的表解析器来将样式内联?除非已经有一个 R 包可以做到这一点?
r ×3
blastula ×1
django ×1
docker ×1
dplyr ×1
formattable ×1
heroku ×1
html ×1
kableextra ×1
knitr ×1
magrittr ×1
pandoc ×1
r-markdown ×1
static-files ×1