云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

域名备案_百度云超级会员_价格

小七 141 0

我将浏览Pyhton构建包的过程(参考我关于Python的博客,具体取决于NumPy)。这就是为什么你会被视为一个先决条件python.

我没有测试这个过程为其他buildpack(如Java),但我假设你可以跟踪相同的步骤适应相同的文件,就像我一样。

而且,值得注意的是,这是一种与上面描述的完全不同的方法构建包.io–基于docker映像之上的打包和构建实用程序。

谈到docker,我不建议使用docker或WSL(Windows Subsystem for Linux),以防您打算调试go脚本。这听起来是个好主意,但会给表带来太多的复杂性(以防您想使用docker)。此外,它甚至与WSL不兼容(至少与我的Windows构建版本不兼容)。它可能在以后的Windows10版本上工作,但是我还不能测试它。

所以,不要再耽搁了,大数据是数据,让我们看看我做了什么来构建这个定制的buildpack。

为了继续,这里是我当前的设置:

Windows10Build1709

LinuxUbuntu18.10

GoLanguage=>1.11.5蟒蛇3吉特cf客户端Lib Buildpack

安装

在此处下载并安装cf CLI for Linux。

在此处下载并安装go language for Linux。

下载并安装python 3.6使用:

安装这些工具后,应安装以下版本:

将以下环境变量添加到您家中的.bashrc或.profile中目录:

通过CMD发出以下go命令来安装此库:

注意:go通常是安静的(在get或Install期间它不会提供很多输出)。

要确保库已安装,请运行以下命令[位于任何路径]:

在github上打开buildpack并按fork按钮。在这里,我将使用以下URL:

在此之后,您应该在github帐户的以下位置拥有一个新的存储库:

要在本地克隆存储库,请将以下命令改编为您的分叉git路径:

这将创建一个名为"python buildpack"的目录,以便您可以创建自己的分支并开始执行更改从这里开始。

但是在我们继续之前,让我们检查一下标准测试是否与我们目前的设置兼容。

要运行单元测试,我们运行以下命令:

这个脚本将下载并安装几个go模块,然后执行测试buildpack所需的步骤

我不是一个"go"开发人员,所以我真的感觉到了是实现这一目标的更好方法。然而,我在这里的目标是能够提供一个buildpack,它能够运行依赖于NumPy等模块的Python应用程序。显然,默认情况下运行的"pip install"不会起作用。我相信这和档案的方式有关要求.txt"由buildpack处理(我认为它会一个接一个地执行此操作,因此它会阻止pip以正确的顺序安装它们)。

因此,它可能会尝试从要求.txt在安装NumPy之前。因此,我的修改非常简单,只需在buildpack尝试处理错误之前运行pip来安装NumPy、SciPY和MatplotLib要求.txt.

名为"COMPILE"的Cloud Foundry Buildpack阶段将调用名为"supply"的go脚本。这就是Python运行时及其模块安装的地方。

我在supply脚本中创建了一个名为InstallNumpy()的方法,来实现这个技巧:

在供应.go.

注:这是最好的方法吗?当然不是!

更好的方法是让pip install命令决定安装列表中列出的所有依赖项的顺序要求.txt文件-谁知道呢。相反,我选择了又快又脏的方法。如果你是一个更好的Python开发人员(而且你肯定比我做得更好),我建议你与项目维护人员取得联系,电商平台数据分析,并尝试为他们做出贡献。我也很乐意测试您的方法-因此请让我知道您对此主题的想法和评论。

您可能希望通过发出以下git命令跳过上述手动修改:

调试您的修改

调试buildpack,我们需要一个基本的项目来运行它。

我已经为我的博客文章准备了一个关于这个主题的例子,但是这次我不得不修改它来支持标准的buildpack。我在另一个分支上这样做是为了避免混淆。

您可能已经注意到,当我们安装带有"go"命令的libbuildpack时,我们已经安装了go-delve包。

delve是一个go-debug守护程序,它允许您从IDE(如可视代码)远程连接。

我们需要了解编译过程中发生的情况编译文件是一个bash脚本,它接受两个参数作为输入,然后运行我们之前修改过的supply函数。供应功能由主菜单.go位于supply/cli目录下的程序。而这两个参数分别是python项目路径和一个临时缓存,大数据好就业吗,用于存储它将下载的文件。

所有这些都是由存储在bin目录下的编译脚本完成的。

让我们创建一个名为准备.sh"基于原始的[compile script],并将start命令替换为将启动调试器:

注意:用自己的IP地址替换脚本中的Linux IP地址。还要注意的是,我在脚本中包含了用于删除创建的目录的例程,并包含了开关[-accept multiclient],以支持多次调试。这将允许您随时停止调试会话并从头开始。如果您最终完成了脚本的执行,并希望从头开始,那么应该终止dlv进程并启动准备.sh再次执行目录清理。

一旦运行脚本,您将看到如下消息:

注意:不要尝试使用变量或"~"来表示主目录。相反,请始终使用项目目录的完整路径,因为我在使用"~"字符正确运行时遇到问题。

对于本博客,我使用的是Windows和Visual Studio代码。一旦你安装了vscode,物联网的应用,确保你已经安装了go扩展:

我已经安装了git for Windows并在本地再次克隆了forked buildpack项目。

打开安装了buildpack的文件夹: