我有 2 个 Heroku 应用程序,包括 Pyhon 和它们之间共享的一些 python 模块(即:它们在两个应用程序中是相同的)。 设置我的 git/requirements.txt 以实现以下目标的最佳方法是什么?
- 共享代码是版本化的(也就是说:它也位于 Git 中,我不在乎在哪里——一个项目?另一个项目?)
- 在开发过程中,我的磁盘上有一份该共享代码的副本
- 在开发过程中,我可以更改共享代码的单个副本并将更改反射(reflect)在两个应用程序中,理想情况下除了更改磁盘上的文件外什么都不做。
- 当推送到 Heroku 时,我所做的只是简单的“推送”
我的直觉告诉我,我需要将共享代码作为 Python 包存储在磁盘上,并在开发过程中将其添加到每个应用程序的 PYTHONPATH 中。 此外,我会将它(如何?使用私有(private)服务器?来自 s3?作为供应商目录?)添加到每个应用程序的 requriments.txt。
...但我不太清楚。
有什么想法吗?
最佳答案
您可以使用 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 中使用私有(private) git 仓库,请 refer to heroku documentation (请注意,它是 username:password
基本身份验证和 does not have email address )。如果你不想使用密码,你可以使用 revocable OAuth token .
关于python - 在 Heroku 应用程序之间共享 Python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14253943/