将模块复制到Django中,“没有名为[moduleName]的模块”

时间:2009-09-24 13:32:10

标签: python django

我非常一致地遇到这个问题...请记住,我对Django和整个Python业余爱好者都很陌生。

例如,似乎每当我在干净安装Python和Django后在新计算机上检查我的Django项目时,它就永远无法找到我创建或复制的项目/应用程序。

所以现在我有一个正在运行的应用程序,我下载了第三方Django模块并将其安装到我的app目录中,将其包含在我的设置中,并且Web服务器因为无法找到模块而退出。

这是我第一次导入第三方模块。在过去,当它找不到我创建的模块时,我只需重命名该文件夹并运行“manage.py startapp appname”,删除它创建的文件夹,然后将我的原始文件夹命名为,繁荣,问题解决...... < / p>

但这显然是一个黑客攻击,我想知道是否有人能解释这里发生的事情以及如何最好地接近它。

我不可能是唯一一个碰到这个问题的人,但我在这个网站上找不到任何与我的问题相符的问题。

在OS X和Windows 7上都会发生。

2 个答案:

答案 0 :(得分:2)

Django的工作方式几乎就是Python的工作原理。默认情况下,运行django-admin.py startproject name时创建的文件夹将添加到python路径中。这意味着你可以进入那里的任何东西。但是,当您将应用程序编写到已安装的应用程序列表中时,您必须要记住。如果您在project / apps / appname上有应用程序,则必须在已安装的应用程序列表中编写'app.appname'

现在有一些方法可以将位于其他地方的第三方应用添加到您的项目中。您可以将它们添加到python路径,放入python路径,或链接到python路径。但是,您也可以在manage.py文件中添加sys.path.insert(...),在其中将您喜欢的文件夹添加到python路径中。执行此操作将允许您仅为该项目的python路径添加文件夹,并使您的python路径更加干净。

答案 1 :(得分:0)

您的第三方django模块应该可以通过PYTHONPATH进行搜索,因为django模块只是一个python模块。现在有两种方法可以做到这一点:

  1. 创建一个文件夹(任何你想要的地方),把你的第三方django模块放在那里。现在将该目录设置为环境变量$ PYTHONPATH 例如(在Linux机器上):

    export PYTHONPATH = / home / me / pythonmodules /

  2. 创建一个文件夹(您想要的任何地方),将第三方django模块放在那里。现在,如果您使用的是Unix盒子,请在该目录中创建一个symlink到python site-packages。使用此命令查找python站点包的位置:

    来自distutils.sysconfig的

    python -c“导入get_python_lib; print get_python_lib()”