Прошло довольно много времени с тех пор, как этот вопрос был поднят. Я столкнулся с подобной проблемой. Следующие шаги объясняют, как сделать это несколько быстрее.
Поскольку pydiction.py не анализирует пакеты рекурсивно, мне пришлось использовать find и vi для создания списка пакетов для Django. Предположим, вы установили django в /usr/local/lib/python2.6/dist-packages/django.
Затем выполните следующее:
cd /usr/local/lib/python2.6/dist-packages
find django -type d > /var/tmp/django_pkgs.sh
Откройте django_pkgs.sh в vim и удалите все строки, содержащие медиа, статические элементы, шаблоны, gis, fixtures, тесты, локаль, локальный вкус и т. Д. В vim это легко. Выполните следующие действия с самой консоли vim:
:g/media/d
:g/static/d
:g/templates/d
....
....
....
Как только все ненужные файлы будут удалены из нашего списка, замените все / на. В консоли vim выполните следующие действия:
:%s!/!.!g
Это преобразует путь к файлу в полные имена модулей Python. Затем замените все символы новой строки пробелами. В консоли vim выполните следующие действия:
%s/\n/ /
Обратите внимание, что между двумя последними косыми чертами есть один символ пробела.
Теперь все имена модулей перечислены в одной строке. Теперь добавьте #! / Bin / bash в первой строке файла. Таким образом, мы конвертируем наш файл в скрипт bash. Теперь добавьте следующее во второй и третьей строках (как объяснил oivvio в одном из предыдущих постов):
export DJANGO_SETTINGS_MODULE=settings
export PYTHONPATH=/path/to/parent/of/settings
Пожалуйста, замените путь, указанный в последней строке, на каталог, где хранится ваш django settings.py.
Затем в начале строки со списком модулей django добавьте следующее
python ./pydiction.py
Эта строка должна выглядеть как
python ./pydiction.py django django.contrib django.contrib.redirects ......
Теперь выйдите из vim и запустите
chmod +x /var/tmp/django_pkgs.sh.
Затем перейдите в каталог, где хранятся complete-dict и pydiction.py, и выполните /var/tmp/django_pkgs.sh
. Вам нужен доступ для записи в файл complete-dict. Если ваш файл списка пакетов правильный, все будет работать нормально. В противном случае вы увидите различные ошибки на консоли, вызванные импортом несуществующих модулей django. Чтобы исправить их, определите такие записи в файле django_pkgs.sh
и удалите их вручную. Затем снова выполните тот же сценарий.
Я бы предпочел pydiction.py
делать рекурсивный поиск модулей, а не всем, кто готовит список модулей вручную. Вероятно, аргумент командной строки, такой как -r, мог бы быть добавлен в pydiction, чтобы сделать это автоматически. (