Python OSError:[Errno 30]Heroku上Django中的只读文件系统

Python OSError:[Errno 30]Heroku上Django中的只读文件系统,python,django,heroku,Python,Django,Heroku,我正在使用Django 2.0和Heroku来托管应用程序 我的媒体目录设置如下 App/settings/production.py: 我正在使用gTTS将文本转换为语音,并将.mp3文件保存在媒体目录中: tts_file_name = str(int(time.time())) + '.mp3' joined_path = os.path.join(settings.MEDIA_ROOT, 'tts') joined_path_with_file = os.path.join(joined

我正在使用Django 2.0和Heroku来托管应用程序

我的媒体目录设置如下

App/settings/production.py:

我正在使用gTTS将文本转换为语音,并将.mp3文件保存在媒体目录中:

tts_file_name = str(int(time.time())) + '.mp3'
joined_path = os.path.join(settings.MEDIA_ROOT, 'tts')
joined_path_with_file = os.path.join(joined_path, tts_file_name)

# create directory if does not exists
if not os.path.exists(joined_path):
    os.makedirs(joined_path)

tts = gTTS(text='Good morning', lang='en')
tts.save(joined_path_with_file)

# tts path to send to template
tts_media_url = os.path.join(settings.MEDIA_URL, 'tts', tts_file_name)
它在本地系统上运行良好,因为我也可以手动更改文件权限

但它不适用于Heroku并给出错误:

OSError: [Errno 30] Read-only file system: '/static_cdn'
我试图通过运行heroku shell来定位static_cdn,但在应用程序路径和根路径中都找不到static_cdn。但它似乎在工作,因为其他通过表单上传的方式工作得很好

使用Django模型的upload\u-to正在工作,甚至在静态\u cdn中创建了目录

我如何在Heroku上的静态目录中创建目录,就像Django使用模型的upload\u-to一样

我正在使用gTTS将文本转换为语音,并将.mp3文件保存在媒体目录中

我不确定是什么导致了您的即时错误,但这在Heroku上不会很好地起作用你可以写它,但是当dyno重新启动时,你写的任何东西都会丢失。这至少每天一次

用于存储生成的文件、上载的文件等。我建议您选择此路径。有

我正在使用gTTS将文本转换为语音,并将.mp3文件保存在媒体目录中

我不确定是什么导致了您的即时错误,但这在Heroku上不会很好地起作用你可以写它,但是当dyno重新启动时,你写的任何东西都会丢失。这至少每天一次

用于存储生成的文件、上载的文件等。我建议您选择此路径。有。

通过删除其他os.path.dirname更改了媒体根路径,它现在正在工作

MEDIA_ROOT = os.path.join(BASE_DIR, 'static_cdn', 'media_root')
通过删除其他os.path.dirname更改了MEDIA_根路径,该路径正在运行

MEDIA_ROOT = os.path.join(BASE_DIR, 'static_cdn', 'media_root')