【发布时间】:2012-11-27 22:17:22
【问题描述】:
我正在使用 Dotcloud 部署我的 Django 应用程序。在本地开发时,我必须在一些依赖项的代码中进行更改(在我的 virtualenv 中)。
所以我的问题是:有没有办法在 dotcloud 上部署时对依赖项(例如 django-registration 或 django_socketio)进行相同的更改?
感谢您的帮助。
【问题讨论】:
我正在使用 Dotcloud 部署我的 Django 应用程序。在本地开发时,我必须在一些依赖项的代码中进行更改(在我的 virtualenv 中)。
所以我的问题是:有没有办法在 dotcloud 上部署时对依赖项(例如 django-registration 或 django_socketio)进行相同的更改?
感谢您的帮助。
【问题讨论】:
有很多方法,但并非所有方法都是干净/简单/可行的。
如果这些依赖项位于 github、bitbucket 或类似的代码存储库上,您可以:
requirements.txt 文件中的分支。这将允许您跟踪对这些依赖项的进一步更改,并轻松地将您自己的修改与未来版本合并。
否则,您可以在代码中包含(修改后的)依赖项。它不是很干净并且会增加应用程序的大小,但这也很好。
最后但同样重要的是,您可以编写一个非常骇人听闻的 postinstall 脚本,以找到要修改的 .py 文件(例如 import foo ; foopath = foo.__file__),然后在该文件上应用补丁。这可能会让大多数系统管理员感到恐惧,但值得一提:-)
【讨论】:
如果您使用的是requirements.txt,不,没有办法从 pypi 执行此操作,因为 Dotcloud 只是下载您从 pypi 指定的包,显然您在 virtualenv 中的更改不会由包的规范版本反映出来。
为了使用您的依赖项的编辑版本,您必须像您编写的任何其他模块一样将它们捆绑到您的代码中,并从那里import它们。
【讨论】: