Django OSError:[Errno 13]权限被拒绝

时间:2017-08-27 17:39:58

标签: python linux django

我是python和Linux的新手,并提前为任何困惑道歉。 我正在尝试使用

收集我的静态文件
python manage.py collectstatic

但这里的错误是我的追溯

  

复制'/var/www/Django/myweb/static/images/test.jpg'   Traceback(最近一次调用最后一次):     文件“manage.py”,第22行,in       execute_from_command_line(sys.argv中)     在execute_from_command_line中输入文件“/home/test01/Django/VENV/local/lib/python2.7/site-packages/django/core/management/init.py”,第363行       utility.execute()     文件“/home/test01/Django/VENV/local/lib/python2.7/site-packages/django/core/management/init.py”,第355行,执行       self.fetch_command(子命令).run_from_argv(self.argv)     在run_from_argv中输入文件“/home/test01/Django/VENV/local/lib/python2.7/site-packages/django/core/management/base.py”,第283行       self.execute(* args,** cmd_options)     文件“/home/test01/Django/VENV/local/lib/python2.7/site-packages/django/core/management/base.py”,第330行,执行       output = self.handle(* args,** options)     文件“/home/test01/Django/VENV/local/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py”,第199行,句柄       collect = self.collect()     文件“/home/test01/Django/VENV/local/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py”,第124行,收集       handler(path,prefixed_pa​​th,storage)     在copy_file中输入文件“/home/test01/Django/VENV/local/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py”,第364行       self.storage.save(prefixed_pa​​th,source_file)     文件“/home/test01/Django/VENV/local/lib/python2.7/site-packages/django/core/files/storage.py”,第54行,保存       return self._save(name,content)     在_save中输入文件“/home/test01/Django/VENV/local/lib/python2.7/site-packages/django/core/files/storage.py”,第321行       os.makedirs(目录)     文件“/home/test01/Django/VENV/lib/python2.7/os.py”,第157行,在makedirs中       mkdir(名称,模式)   OSError:[Errno 13]权限被拒绝:'/ var / www / staticfiles / images'

我也尝试sudo python manage.py collectstatic

  

文件“manage.py”,第17行,in       “无法导入Django。你确定已经安装了吗?”   ImportError:无法导入Django。您确定PYTHONPATH环境变量已安装并可用吗?您是否忘记激活虚拟环境?

这是我的setting.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

STATIC_ROOT = '/var/www/staticfiles'

4 个答案:

答案 0 :(得分:2)

您可以更改目录的完整路径,而不必更改权限,例如:

STATIC_ROOT = os.path.join(BASE_DIR, "/var/www/staticfiles/")

Source

答案 1 :(得分:1)

尝试删除路径var前面的斜杠。

所以

STATIC_ROOT = '/var/www/staticfiles/

更改为

STATIC_ROOT = 'var/www/staticfiles/'

STATIC_ROOT = os.path.join(BASE_DIR, 'var/www/staticfiles/')

问题在于路径无效,因此权限被拒绝。

答案 2 :(得分:0)

授予文件夹 / var / www / staticfiles 所需的权限:

chmod -R 755 /var/www/staticfiles

如评论中所述,建议不要向所有用户授予权限777,而是尝试使用chown -R your_user your_file更改文件夹的所有者

答案 3 :(得分:0)

尝试使 manage.py 可执行。这解决了我的问题:)

chmod +x manage.py