1

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

$ 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文件夹是文件夹中实际南包的 sim 链接/dist-packages。我确实在实际/south文件夹中放了一个 sim 链接回到 django 包,但这并没有解决任何问题。

有什么问题?

4

1 回答 1

2

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

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

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

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

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

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

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

于 2013-01-14T22:10:56.180 回答