如何将Django模块添加到pydiction字典中?

2024-05-01 22:00:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用pydiction在VIM编辑器中自动完成Python/Django语句。在

当我尝试添加django模块以完成dic时,请使用以下命令:

python pydiction.py /usr/lib/pymodules/python2.6/django

或者:

^{pr2}$

我收到这个错误:

无法导入:(…)。不支持按文件名导入。在

谢谢!在

措辞:http://www.vim.org/scripts/script.php?script_id=850


Tags: 模块djangopy命令libusrscript语句
3条回答

因为某种原因

python pydiction.py django

不会添加django的子模块

我要做的是:

^{pr2}$

然后我必须分别添加django的每个子模块

^{3}$

等等。很无聊,但很管用

这个问题提出来已经有一段时间了。我也面临类似的问题。下面的步骤说明如何更快地完成。在

因为pydiction.py不能递归地解析包,我不得不使用find和vi为Django构建一个包列表。假设您已经在/usr/local/lib/python2.6/dist-packages/django.中安装了django,然后执行以下操作:

cd /usr/local/lib/python2.6/dist-packages
find django -type d > /var/tmp/django_pkgs.sh

打开django_包装.sh在vim中删除所有包含媒体、静态、模板、gis、fixture、tests、local、localflavor等的行。从vim控制台本身执行以下操作:

^{pr2}$

一旦从列表中删除了所有不需要的文件,请将all/替换为。在vim控制台内执行以下操作:

^{3}$

这将把文件路径转换为完全限定的Python模块名。然后用空白替换所有换行符。在vim控制台内执行以下操作:

%s/\n/ /

注意,最后两个正斜杠之间只有一个空格字符。 现在,所有模块名称都列在一行中。现在添加#!/文件第一行的bin/bash。这样,我们就可以将文件转换为bash脚本。现在在第二行和第三行添加以下内容(正如oivvio在前面的一篇文章中所解释的那样):

export DJANGO_SETTINGS_MODULE=settings
export PYTHONPATH=/path/to/parent/of/settings

请用django所在的目录替换最后一行中提到的路径设置.py被保留。在

然后在列出django模块的行的开头,添加以下内容

python ./pydiction.py

这条线现在应该看起来像

python ./pydiction.py django django.contrib django.contrib.redirects ......

现在退出vim并运行

chmod +x /var/tmp/django_pkgs.sh.

然后切换到完成dict和pydiction.py保留并执行/var/tmp/django_pkgs.sh。您确实需要对文件complete-dict的写访问权限。如果您的包列表文件是正确的,那么一切都将正常工作。否则,您将在控制台上看到由于导入不存在的django模块而导致的各种错误。要修复它们,请在django_pkgs.sh文件中标识这些条目并手动删除它们。然后再次执行相同的脚本。在

我宁愿pydiction.py对模块进行递归搜索,而不是每个人都手动准备模块列表。也许可以在pydiction中添加-r之类的命令行参数来自动执行此操作。:(

通过浏览pydiction文档(我不是pydiction用户),您似乎误用了pydiction.py脚本。在

您不应该为导入提供文件名。您应该提供一个模块名,以便创建字典。模块必须已经在pythonpath中。在

所以,如果django在你的pythonpath中,你可以:

python pydiction.py django

相关问题 更多 >