在看了实用Django项目的可重用应用章节并听了DjangoCon(Pycon?)讲座中,似乎有一个重点是通过将你的应用程序安装到Python路径(即站点包)中,使你的应用程序可插拔。在
我不明白的是,当其中一个安装的应用程序的版本发生变化时会发生什么。如果我更新一个安装到站点包中的应用程序,那么这不会破坏我当前所有使用它的项目吗?我从来没注意到设置.py你可以指定要导入的应用程序的版本。在
我认为在Ruby/Rails中,他们可以冻结gem来应对这种情况。但是我们应该在Python/Django中做什么呢?在
Tags:
同一个包有多个版本会很麻烦(但是setuptools可以做到)。在
我发现将每个项目放在自己的
virtualenv
中更为简洁。我们使用virtualevwrapper
来轻松地管理virtualenv,使用no-site-packages
选项使每个项目真正独立并跨机器移植。在这是recommended setup for mod_wsgi servers。在
如果你有多个Django站点,你肯定不想把你的Django应用放到站点包中。在
正如kenarnold所回答的,最好的方法是使用ianbicking的virtualenv(虚拟Python环境构建器)。如果必须运行Django的多个版本,这一点尤其正确。在
但是,如果您可以运行Python和Django的单一版本,那么将这些应用程序安装到您的项目目录中可能会更容易一些。这样,如果一个外部应用程序得到更新,你就可以一次升级一个项目。这是一次用于外部Django应用程序的结构Pinax,但我认为它现在使用的是virtualenv+pip(而不是setuptools/distutils)。在
我们做什么。在
我们只把“第三方”的东西放在网站包。Django、XLRD、PIL等
我们将整个项目保持为包和Django项目的集合。每个项目都是整个网站的一部分。对于端口80和端口443(SSL),我们有两种不同的行为。在
我们使用版本号作为应用程序名称的一部分。这是主版本号,与模式相关,因为“使用相同的模式”是主要版本兼容性的一个定义。在
您必须迁移数据并证明新版本中的工作正常。然后可以删除旧版本并从数据库中删除架构。迁移数据很有挑战性,因为你不能同时运行两个应用程序。在
大多数应用程序只安装了一个当前版本。在
相关问题 更多 >
编程相关推荐