我有两个python项目共享一些公共库,它们都组织成三个git存储库:project1,project2和common-lib。这两个项目都是为了部署到与common-lib捆绑在一起的弹性beanstalk。
我正在尝试找到最合适的方式来构建这些项目,以便在本地开发,并使用eb deploy构建一个zip文件进行部署。
为本地开发设置一切很容易。只需检查每个仓库并在common-lib中执行python setup.py develop
,即可在virtualenv中使用公共库。
对于EB部署,最好有一个setup.py命令生成包含项目的EB compatible zip file和带有requirements.txt文件的common-lib,该文件列出了两者的pip依赖关系。我还没有找到一种简单的方法来做到这一点,这有点令人惊讶,因为我认为这是一个相当普遍的情况。
我无法在project1或project2的requirements.txt文件中为common-lib指定git存储库,因为无法从AWS访问存储库。
答案 0 :(得分:0)
对我来说,正确的方法是从公共lib创建一个python包,将它发布到私人pypi服务器,如https://gemfury.com/l/pypi-server。将它作为python包中的requirements.txt作为参考。
另一个解决方案是将common-lib包含为git子模块https://git-scm.com/docs/git-submodule。有了它,你就会有分离,因为它将存在于一个单独的存储库中,你将在你的项目中有一个简单的引用作为git子模块。