在 vagrant 的 Django 应用程序中创建迁移文件夹的权限被拒绝

Posted

技术标签:

【中文标题】在 vagrant 的 Django 应用程序中创建迁移文件夹的权限被拒绝【英文标题】:Permission denied to create migration folder in Django app in vagrant 【发布时间】:2015-09-01 16:52:01 【问题描述】:

我正在尝试从 1.4 升级到 Django 1.8

我尝试在 vagrant 环境中运行以下命令

$ python manage.py makemigrations [app_name]

得到这个错误

Traceback(最近一次调用最后一次):文件“manage.py”,第 9 行,在 execute_from_command_line(sys.argv) 文件“/srv/www/[project]/shared/env/local/lib/python2.7/site-packages/django/core/management/init.py” , 第 338 行,在 execute_from_command_line utility.execute() 文件“/srv/www/[project]/shared/env/local/lib/python2.7/site-packages/django/core/management/init.py”, 第 330 行,执行中 self.fetch_command(subcommand).run_from_argv(self.argv) 文件“/srv/www/[project/shared/env/local/lib/python2.7/site-packages/django/core/management/base.py”, 第 390 行,在 run_from_argv self.execute(*args, **cmd_options) 文件 "/srv/www/[project]/shared/env/local/lib/python2.7/site-packages/django/core/management/base.py", 第 441 行,执行中 输出 = self.handle(*args, **options) 文件“/srv/www/[project]/shared/env/local/lib/python2.7/site-packages/django/core/management/commands/makemigrations. py", 第 143 行,在句柄中 self.write_migration_files(更改)文件“/srv/www/[project]/shared/env/local/lib/python2.7/site-packages/django/core/management/commands/makemigrations.py”, 第 165 行,在 write_migration_files 中 os.mkdir(migrations_directory) OSError: [Errno 13] Permission denied: '/vagrant/code/[project]/[app]/migrations'

通过 vagrant ssh [app] 命令登录应用程序后运行该命令。 然后设置虚拟环境,然后发生这种情况。

【问题讨论】:

尝试:sudo python manage.py makemigrations [app_name] 【参考方案1】:

您不必使用 sudo 或成为 root 即可进行迁移。

我认为 sorl.thumbnail 试图将它的迁移写入一个受保护的文件夹(也许是 Python 站点包?),这使得事情不是很便携。

所以要克服这个问题,首先在您的项目中创建一个名为“sorl_thumbnail”的目录,然后包含一个空白的 __init __.py 文件。

MyProject
|_MyApp1
| |_migrations
| |___init__.py
|
|_sorl_thumbnail
  |___init__.py

最后在 settings.py 中的某处添加这些行:

MIGRATION_MODULES = 
    'thumbnail': 'sorl_thumbnail.migrations',

就是这样!

现在你应该可以运行了:

makemigrations thumbnail
migrate thumbnail

现在应该可以在本地项目的“sorl_thumbnail/migrations”文件夹中找到迁移。

【讨论】:

【参考方案2】:

您应该以 admin 或 root 身份登录您的计算机。如果不确定,请尝试在控制台/终端上使用 sudo 命令:

sudo python manage.py makemigrations [app_name]

【讨论】:

以上是关于在 vagrant 的 Django 应用程序中创建迁移文件夹的权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

一.django初识

一.django初识

流星应用程序关于 vagrant share 的问题

环境安装配置django

vagrant+git的使用

Vagrant 同步文件夹上的 Composer 错误