代码之家  ›  专栏  ›  技术社区  ›  Roland Tepp

如何在Django中重用可重用的应用程序

  •  19
  • Roland Tepp  · 技术社区  · 17 年前

    我正试图在Django创建我的第一个网站,当我在寻找应用程序的时候,我不断地遇到一个叫做 “可重用的应用程序” .

    我明白 概念 对于一个可以很容易地重用的应用程序来说,但是在Django中重用应用程序的方法对我来说已经完全失去了。在整个行业中困扰我的几个问题是:

    重新使用现有的django应用程序的首选方法是什么?我应该把它放在哪里,如何引用它?

    据我所知,建议是把它放在你的“pythonpath”上,但一旦我需要将我的应用部署到一个我访问受限的远程位置(例如在托管服务上),它就会中断。

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

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

    2 回复  |  直到 12 年前
        1
  •  26
  •   Carl Meyer    12 年前

    一般来说,使用可重复使用的应用程序所需要的唯一一件事就是确保它处于打开状态。 sys.path ,以便您可以从python代码导入它。在大多数情况下(如果作者遵循最佳实践),可重用应用程序tarball或bundle将包含一个顶级目录,其中包含docs、readme、a setup.py ,然后是包含实际应用程序的子目录(请参见 django-voting 例如,应用程序本身在“投票”子目录中)。这个子目录是需要放在您的python路径中的。可能的方法包括:

    • 运行 pip install appname ,如果应用程序已上载到 PyPI (现在大多数是)
    • 使用安装应用程序 setup.py install (其结果与 PIP安装AppName ,但要求您首先自己下载和解包代码;PIP将为您这样做)
    • 手动将代码目录符号化链接到您的python站点包目录
    • 使用类似软件 virtualenv 创建一个“虚拟python环境”,它有自己的站点包目录,然后运行 setup.py安装 或 PIP安装AppName 如果该virtualenv处于活动状态,或者将应用程序放置在virtualenv的站点包中或进行符号链接(如果您重视未来的健全性,强烈推荐使用所有“全局安装”选项)
    • 将应用程序放在您打算放各种应用程序的某个目录中,然后将该目录添加到pythonpath环境变量中

    如果您可以启动一个python解释器并“导入投票”(例如),而不获得importerror,那么您就会知道您已经找到了正确的位置。

    在只有ftp访问权的服务器上,唯一的选项实际上是最后一个选项,他们必须为您设置它。如果他们声称支持Django,他们必须提供 一些 您可以在其中上载包,这些包可以在python中导入。如果不知道你的网络主机的细节,就不可能说出它们是如何为你构建的。

        2
  •  2
  •   anttikoo    16 年前

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

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

    之后的部署就和克隆或将VCS存储库签出到任何您想使用它的地方一样简单。

    这有两个额外的好处:

    • 版本不匹配;您的软件总是使用您测试的版本,而不是部署时可用的版本。
    • 如果有多个人在项目上工作,其他人就不必安装依赖项。

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

    推荐文章