在vagrant中的Django app中创建迁移文件夹的权限被拒绝

时间:2015-06-16 18:02:23

标签: python django vagrant django-migrations

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

我试图在vagrant环境中运行以下命令并得到此错误。

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

$ python manage.py makemigrations [app_name]

追踪(最近一次通话):   文件" manage.py",第9行,in     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(子命令).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行,执行中     output = 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]权限被拒绝:' / vagrant / code / [project] / [app] / migrations'

2 个答案:

答案 0 :(得分:2)

您不必使用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 "文件夹中。

答案 1 :(得分:0)

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

sudo python manage.py makemigrations [app_name]