当我尝试使用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包,但这并没有解决任何问题。
可能出现什么问题?
答案 0 :(得分:2)
问题是由于virtualenv的权限和使用。您获得了“权限被拒绝”错误,因为您当前的用户没有此项目的写入权限。
您可以更改整个项目的权限,并使当前用户成为项目中所有文件和文件夹的所有者
sudo chown -R <username>:<username> <project_folder>
当你尝试使用sudo运行迁移时,它无法找到django包,因为它位于virtualenv中,而virtualenv已被普通用户激活。我想这些步骤应该解决这个问题,因为你不想改变权限。
sudo -i
source /<virtualenv_path>/bin/activate
这应该激活sudo的virtualenv,现在你将能够访问virtualenv中的所有包
我认为你应该采用权限方式