Collectstatic - 权限被拒绝,pythonanywhere bash 终端

Posted

技术标签:

【中文标题】Collectstatic - 权限被拒绝,pythonanywhere bash 终端【英文标题】:Collectstatic - permission denied, pythonanywhere bash terminal 【发布时间】:2018-07-28 04:58:05 【问题描述】:

我正在尝试在 pythonanywhere 的 bash 终端中使用 collectstatic 命令:

python manage.py collectstatic

但我明白了:

PermissionError: [Errno 13] Permission denied: '/static'

请问有人可以帮忙吗?这两天我一直在尝试解决这个问题。

这是完整的错误:

nomadpad-virtualenv) 11:51 ~/nomadpad (master)$ python manage.py collectstatic Copying '/home/DMells123/.virtualenvs/nomadpad-virtualenv/lib/python3.6/site-packages/djang o/contrib /admin/static/admin/img/inline-delete.svg' Traceback(最近一次调用最后):文件“manage.py”,第 22 行,在 execute_from_command_line(sys.argv) 文件“/home/DMells123/.virtualenvs/ nomadpad-virtualenv/lib/python3.6/site-packages/django /core/management/init.py”,第 364 行,在 execute_from_command_line utility.execute() 文件“/home/DMells123/.virtualenvs/nomadpad-virtualenv/lib /python3.6/site-packages/django /core/management/init.py”,第 356 行,在执行 self.fetch_command(subcommand).run_from_argv(self.argv) 文件“/home/DMells123/.virtualenvs/nomadpad- virtualenv/lib/python3.6/site-packages/django /core/management/base.py”,第 283 行,在 run_from_argv self.execute(*args, cmd_options) 文件“/home/DMells123/.virtualenvs/nomadpad-virtualenv /lib/python3.6/site-packages/django /core/management/base.py”,第 330 行,在执行输出 = self.handle(*args, options) 文件“/home/DMells123/.virtualenvs/nomadpad-virtualenv/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py ”,第 199 行,在句柄中收集 = self.collect() 文件“/home/DMells123/.virtualenvs/nomadpad-virtualenv/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic. py”,第 124 行,在收集处理程序(路径,prefixed_pa​​th,存储)文件“/home/DMells123/.virtualenvs/nomadpad-virtualenv/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/ collectstatic.py”,第 364 行,在 copy_file self.storage.save(prefixed_pa​​th, source_file) 文件“/home/DMells123/.virtualenvs/nomadpad-virtualenv/lib/python3.6/site-packages/django/core/files/ storage.py”,第 54 行,在保存中返回 self._save(name, content) 文件“/home/DMells123/.virtualenvs/nomadpad-virtualenv/lib/python3.6/site-packages/django/core/files/storage .py",第 321 行,在 _save os.makedirs(directory) 文件中“/home/DMells123/.virtualenvs/nomadpad-virtualenv/lib/python3.6/os.py”,第 210 行,在 makedirs makedirs(head,mode,exist_ok)文件“/home/DMells123/.virtualenvs/nomadpad-virtualenv /lib/python3.6/os.py",第 210 行,在 makedirs makedirs(head, mode, exist_ok) 文件中 "/home/DMells123/.virtualenvs/nomadpad-virtualenv/lib/python3.6/os.py",第 220 行,在 makedirs mkdir(name, mode) PermissionError: [Errno 13] Permission denied: '/static'

静态设置

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIR = os.path.join(BASE_DIR, 'templates')
STATIC_DIR = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [STATIC_DIR, ]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_DIR = os.path.join(BASE_DIR, 'posts/media')
MEDIA_ROOT = MEDIA_DIR
MEDIA_URL = '/media/'

【问题讨论】:

看起来您的静态目录设置为文件系统的根目录 (/static) - 大多数操作系统不会让您在没有升级权限的情况下在那里创建目录。将其设置为您确实具有写入权限的路径...(可能只是您不希望出现/ 请发布您的完整 STATIC_* 设置。我怀疑您对 STATIC_ROOT 和 STATIC_URL 感到困惑。 @DanielRoseman 谢谢丹尼尔 - 我相信我实际上刚刚修复了它。我从静态根目录中遗漏了一点,它应该是帖子/静态的。 【参考方案1】:

我在STATIC_ROOT 中遗漏了一点,应该是posts/static

【讨论】:

以上是关于Collectstatic - 权限被拒绝,pythonanywhere bash 终端的主要内容,如果未能解决你的问题,请参考以下文章

在HDFS权限被拒绝问题,怎么解决

apache配置中的权限被拒绝:[Errno 13]权限被拒绝

Django collectstatic 不覆盖生产文件

WinSCP:权限被拒绝。错误代码:3来自服务器的错误消息:权限被拒绝[关闭]

权限被拒绝(缺少 INTERNET 权限?):但已授予权限

访问被拒绝:获取云端硬盘凭据时权限被拒绝