django south:django之路的问题

时间:2013-01-14 20:13:08

标签: django django-south

当我尝试使用south时,问题会导致此错误:

$ python manage.py schemamigration
You must provide an app to create a migration for.
$ python manage.py schemamigration myapp --initial
OSError: [Errno 13] Permission denied: '../myapp/migrations'
$ sudo python manage.py schemamigration myapp --initial
ImportError: No module named django.core.management
$ python
>>> import south
>>> import django.core.management
>>> south.__file__
'/home/mydev/venv/lib/python2.7/site-packages/south/__init__.pyc'
>>> django.__file__
'/home/mydev/venv/lib/python2.7/site-packages/django/__init__.pyc'

在我看来,manage.py schemamigration会生成一条似乎由schemamigration返回的错误消息。但schemamigration和其他南方命令一旦被调用就找不到django。

'/home/mydev/venv/lib/python2.7/site-packages/'在我的sys.path上。 /south文件夹是指向/dist-packages文件夹中的实际南方包的SIM卡链接。我确实在实际的/south文件夹中放了一个sim链接回到django包,但这并没有解决任何问题。

可能出现什么问题?

1 个答案:

答案 0 :(得分:2)

问题是由于virtualenv的权限和使用。您获得了“权限被拒绝”错误,因为您当前的用户没有此项目的写入权限。

您可以更改整个项目的权限,并使当前用户成为项目中所有文件和文件夹的所有者

sudo chown -R <username>:<username> <project_folder>

当你尝试使用sudo运行迁移时,它无法找到django包,因为它位于virtualenv中,而virtualenv已被普通用户激活。我想这些步骤应该解决这个问题,因为你不想改变权限。

sudo -i
source /<virtualenv_path>/bin/activate

这应该激活sudo的virtualenv,现在你将能够访问virtualenv中的所有包

我认为你应该采用权限方式