我已经在 Heroku 上启动了我的应用程序,但需要更改我安装在 requirements.txt 文件中的一个依赖库的文件之一。
在我的本地机器上,这只是在我的虚拟环境中 lib > python2.7 > site-packages 等。
这些依赖项存储在 Heroku 的文件结构中的什么位置?当我进入 lib 中的 python 文件夹时,站点包似乎没有我的库。
我已经在 Heroku 上启动了我的应用程序,但需要更改我安装在 requirements.txt 文件中的一个依赖库的文件之一。
在我的本地机器上,这只是在我的虚拟环境中 lib > python2.7 > site-packages 等。
这些依赖项存储在 Heroku 的文件结构中的什么位置?当我进入 lib 中的 python 文件夹时,站点包似乎没有我的库。
似乎最近(截至 2016 年 1 月),依赖项安装在此位置:
app/.heroku/python/lib/python2.7/site-packages/
您可以通过运行以下命令查看站点包的内容,因为它位于 heroku 上:
$ heroku run ls .heroku/python/lib/python2.7/site-packages/
简短的回答是站点包位于/app/.heroku/venv/lib/python2.7/site-packages
. 如果你想四处看看,你可以使用 `heroku run -app [app_name] bash' 打开一个远程 shell。但是,您可能不想只在适当的位置编辑包,因为不能保证 heroku 不会擦干净并使用您的 requirements.txt 重新开始另一个实例。相反,如果您需要自定义一个包,一个好的策略是创建您自己的项目代码分支,然后在 requirements.txt 中指定您自定义的分支。
例如,我django-crowdsourcing
用于我的一个网站,但需要自定义代码。因此,我在 google 代码上创建了自己的 fork,并使用 requirements.txt 中的以下条目指向了这个自定义 fork:
-e hg+https://evangrim@code.google.com/r/evangrim-django-crowdsourcing/@b824d8f377b5bc2706d9755650e3f35061f3e309#egg=django_crowdsourcing-dev
这告诉 pip 检查我的 fork 的副本并使用它将包安装到 heroku 的 virtualenv 中以供我的应用程序使用。以这种方式做事更加健壮,因为它在 heroku 期望您使用的 pip 安装框架中工作。