2009-09-24 112 views
0

我一直遇到这个问题......请记住,我对Django和一位总的Python业余爱好者来说是相当新颖的。将模块复制到Django中,“没有名为[moduleName]的模块”

看来,例如,每当我经过一个干净的安装Python和Django的的检查了我的Django项目在新计算机上,它永远不能找到项目/应用程序创建或复制。

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

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

但是,这显然是一个黑客攻击,我想知道是否有人可以解释这是怎么回事,以及如何最好地解决它。

我不能成为唯一一个遇到过这个问题的人,但我在这个网站上找不到任何其他问题似乎与我的问题相符。

发生在OS X和Windows 7的

回答

0

你的第三方Django的模块应该由PYTHONPATH可搜索的,因为Django的模块是不超过一个Python模块等。现在有两种方法可以做到这一点:

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

    出口PYTHONPATH = /家庭/ ME/pythonmodules/

  2. 创建一个文件夹(任何你想要的),把第三方的Django模块在那里。现在如果你在Unix上,创建一个symlink到那个目录到python site-packages。使用此命令找出你的python软件包是:

    蟒蛇-c “从distutils.sysconfig进口get_python_lib;打印get_python_lib()”

+0

将符号链接称为OSX中的“别名”? – 2009-09-24 14:21:51

+0

OSX中还有一个用于创建符号链接的ln命令。 – 2009-09-24 20:49:07

2

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

现在有一些方法可以在您的项目中添加位于其他位置的第三方应用程序。您可以将它们添加到您的Python路径,放入您的Python路径,或者链接到您的Python路径。但是,您还可以在manage.py文件中添加一个sys.path.insert(...),在该文件中将您喜欢的文件夹添加到Python路径中。这样做可以让你只将文件夹添加到你的Python路径中,并且保持你的python路径更加干净。

+0

这似乎是正确的方向。我/用户/我/桌面/应用/ 里面的/应用/我有 /mainApp /和/ thirdPartyApp/ 我尝试添加这两种/用户/我/桌面/应用/用户和//ME/desktop/apps/thirdPartyApp /到manage.py指令,都没有任何影响。我也检查了我安装的应用程序的语法,并尝试了thirdPartyApp.submodulename和apps.thirdPartyApp.submodulename 并且这些都没有任何效果... OS X可能是愚蠢的,我今晚会在Windows上尝试它。 – 2009-09-24 15:49:38