我有2个Heroku应用程序,包括Pyhon,以及它们之间共享的一些python模块(即:它们在两个应用程序中都是相同的)。 设置我的git / requirements.txt以实现以下目标的最佳方法是什么?
我的直觉告诉我,我需要将共享代码作为Python包,在磁盘上,并在开发中将其添加到每个应用程序的PYTHONPATH。 此外,我会添加它(如何使用私有服务器?从s3?作为供应商目录?)到每个应用程序的requriments.txt。
......但我无法确定它。
有什么想法吗?
答案 0 :(得分:4)
您可以使用pip
要求文件来执行此操作。您可以拥有一个用于本地开发,一个用于您的应用。有关详细信息,请查看the requirements file format。
file:///path/to/your/lib/project#egg=MyProject
这应该为您提供来自您应用的只读访问权限,这对共享代码(例如项目的git clone
)非常有用。请注意,它将指向HEAD。这应符合要求1,2,3。
对于项目布局,您可以查看setuptools documentation;例如创建一个setup.py
和一个包含代码的包。您可以查看requests
库a good example。
git://git.myproject.org/MyProject.git#egg=MyProject
这应该包含你推送到你的仓库的任何代码。我没有Heroku的经验,但如果they support requirements file that should just work。这应该符合要求1,我希望4。
如果你想使用heroku私人git repo,请refer to heroku documentation(请注意它是username:password
基本身份验证和does not have email address)。如果您不想使用密码,可以使用revocable OAuth token。
答案 1 :(得分:3)
您应该使用Git Submodule。
您创建一个代码所在的项目,然后将对此的引用添加到您的两个Heroku应用程序中。
答案 2 :(得分:1)
另一个想法是深入研究Git Subtree Merging。
您可以将公共模块作为分支存储在两个存储库中,指向共同的原点。然后你可以把它放到你的项目文件夹中。