Suas cláusulas de correspondência de arquivo parecem estar incorretas.
<Files ~ "^\.py">
corresponderá os arquivos cujos nomes serão iniciados pelos caracteres .py
. Você vai querer
<Files ~ "\.py$">
em vez disso.
Mas sua expressão regular FilesMatch
parece correta. Então talvez o problema esteja em outro lugar. Talvez o seu Apache use apenas as diretivas de controle de acesso do novo estilo?
Tente substituir o estilo antigo
Order deny,allow
deny from all
com o novo estilo equivalente:
Require all denied