Nik*_*nko 6 python django python-module python-import
在我的Django项目中,我有一个名为app的应用程序profile,它主要包含我的profile.models.UserProfile类以获取有关User对象的其他信息(对Django人来说可能很熟悉).现在我已经将一些初始化代码放入profile/__init__.py(某些信号)并遇到了一个问题:Django告诉我hotshot_profile没有找到一个名为的表.
经过几个小时的搜索,我将问题追溯到导入订单.跑步python -v manage.py test我发现了以下内容:
import nose.plugins.prof # precompiled from /home/rassie/.virtualenvs/myproject/lib/python2.6/site-packages/nose/plugins/prof.pyc
import hotshot # directory /usr/lib64/python2.6/hotshot
import hotshot # precompiled from /usr/lib64/python2.6/hotshot/__init__.pyc
dlopen("/home/rassie/.virtualenvs/myproject/lib64/python2.6/lib-dynload/_hotshot.so", 2);
import _hotshot # dynamically loaded from /home/rassie/.virtualenvs/myproject/lib64/python2.6/lib-dynload/_hotshot.so
import hotshot.stats # from /usr/lib64/python2.6/hotshot/stats.py
import profile # directory /home/rassie/MyProject/apps/profile
import profile # precompiled from /home/rassie/MyProject/apps/profile/__init__.pyc
Run Code Online (Sandbox Code Playgroud)
所以我的Nose跑步者输入nose.plugins.prof(即使这个插件已关闭),导入hotshot,尝试导入profile.但是,profile从我的项目中导入,而它应该已经从系统Python导入.
显然,我自己的profile模块与系统profile模块冲突.我显然不能从我自己的编程中排除与Python捆绑在一起的每个模块名称.所以问题是,我从哪里开始?我是否必须myproject为我的所有应用创建命名空间?Django会与之合作吗?
PS:Table的名称hotshot_profile似乎来自于另一个尚未完全分析的命名冲突,其中包含一个Profile类pybb,我也在我的项目中使用它.但这不是这个问题的范围.
您永远不应该在表单中导入您自己的模块import mymodule(相对导入).相反,你应该总是使用import myproject.mymodule(绝对导入).这可以避免所有名称冲突.
| 归档时间: |
|
| 查看次数: |
434 次 |
| 最近记录: |