在 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 应用程序中创建迁移文件夹的权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章