22

我正在尝试在 Django 中创建我的第一个站点,并且在寻找示例应用程序以从中汲取灵感时,我经常偶然发现一个名为“可重用应用程序”的术语。

我理解可重用应用程序的概念很容易,但在 Django 中重用应用程序的方法对我来说非常迷茫。在整个业务中困扰我的几个问题是:

重用现有 Django 应用程序的首选方法是什么?我把它放在哪里以及如何引用它?

据我了解,建议将其放在您的“PYTHONPATH”上,但是一旦我需要将我的应用程序部署到我访问受限的远程位置(例如在托管服务上),它就会中断。

因此,如果我在本地计算机上开发我的站点并打算将其部署在我只有 ftp 访问权限的 ISP 上,我如何重用 3rd 方 Django 应用程序,以便如果我部署我的站点,该站点可以继续工作(例如我唯一能指望的是服务提供商安装了​​ Python 2.5 和 Django 1.x)?

如何组织我的 Django 项目,以便我可以轻松地将它与我想要使用的所有可重用应用程序一起部署?

4

2 回答 2

28

通常,使用可重用应用程序唯一需要做的就是确保它处于打开状态sys.path,以便您可以从 Python 代码中导入它。在大多数情况下(如果作者遵循最佳实践),可重用应用程序 tarball 或捆绑包将包含一个顶级目录,其中包含 docs、一个 README、asetup.py以及一个包含实际应用程序的子目录(参见django-voting示例;应用程序本身位于“投票”子目录中)。这个子目录需要放在你的 Python 路径中。这样做的可能方法包括:

  • running pip install appname,如果应用程序已上传到PyPI(现在大多数是)
  • 安装应用程序setup.py install(这与 具有相同的结果pip install appname,但需要您首先自己下载并解压缩代码;pip 将为您完成)
  • 手动将代码目录符号链接到您的 Python 站点包目录
  • 使用virtualenv之类的软件来创建一个“虚拟 Python 环境”,它有自己的站点包目录,然后运行setup.py installpip install appname激活该 virtualenv,或者将应用程序放置或符号链接到 virtualenv 的站点包中(强烈推荐在所有“全局安装”选项,如果您重视未来的理智)
  • 将应用程序放置在您打算放置各种应用程序的某个目录中,然后将该目录添加到 PYTHONPATH 环境变量中

如果您可以启动 Python 解释器并“导入投票”(例如)而不会收到 ImportError,那么您将知道您已经在正确的位置。

在您只有 FTP 访问的服务器上,您唯一的选择实际上是最后一个,他们必须为您设置它。如果他们声称支持 Django,他们必须提供一些可以上传包的地方,并且可以在 Python 中导入它们。如果不知道您的虚拟主机的详细信息,就不可能说出他们如何为您构建它。

于 2009-02-17T15:59:50.897 回答
2

一个老问题,但这是我所做的:

如果您使用的是版本控制系统 (VCS),我建议将您的软件需要的所有可重用应用程序和库(包括 django)放在 VCS 中。如果您不想将它们直接放在项目根目录下,可以修改 settings.py 以将它们的位置添加到 sys.path。

在部署之后,只需将 VCS 存储库克隆或检出到您想要使用它的任何位置即可。

这有两个额外的好处:

  • 版本不匹配;您的软件始终使用您对其进行测试的版本,而不是部署时可用的版本。
  • 如果多个人在项目上工作,则无需其他人处理安装依赖项。

当需要更新组件的版本时,请在您的 VCS 中更新它,然后通过它将更新传播到您的部署。

于 2010-09-14T15:01:39.937 回答