1. ホーム
  2. スクリプト・コラム
  3. ゴラン

golang 開発 go パッケージ 依存性管理 godep 使用法 チュートリアル

2022-01-07 17:04:32

はじめに

godepはパッケージの依存性管理ツールで、最も主流のもので、原理はバージョン管理情報をスキャンして記録し、goコマンドの前にシェルを追加して依存性管理を行うことです。

インストール

https://github.com/tools/godep

fg=sns.JointGrid(x=cols[0],y=cols[1],data=data_frame,)
fg.plot_marginals(sns.distplot)

インストールに成功すると def distplot Found at: seaborn.distributions def distplot(a=None, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None, x=None): """DEPRECATED: Flexibly plot a univariate distribution of observations. ... warning:: This function is deprecated and will be removed in a future version. Please adapt your code to use one of two new functions: - :func:`displot`, a figure-level function with a similar flexibility over the kind of plot to draw - :func:`histplot`, an axes-level function for plotting histograms, including with kernel density smoothing This function combines the matplotlib ``hist`` function (with automatic calculation of a good default bin size) with the seaborn :func:`kdeplot` It can also fit ``scipy.stats`` distributions and plot the estimated PDF over the data. Parameters ---------- a : Series, 1d-array, or list. Observed data. If this is a Series object with a ``name`` attribute, If this is a Series object with a ``name`` attribute, the name will be used to label the data axis. bins : argument for matplotlib hist(), or None, optional If unspecified, as reference rule is used If unspecified, as reference rule is used that tries to find a useful default. hist : bool, optional Whether to plot a (normed) histogram. kde : bool, optional Whether to plot a gaussian kernel density estimate. rug : bool, optional Whether to draw a rugplot on the support axis. fit : random variable object, optional An object with `fit` method, returning a tuple that can be passed to a `pdf` method a positional arguments following a grid of values to evaluate the pdf on. hist_kws : dict, optional Keyword arguments for :meth:`matplotlib.axes.Axes.hist`. kde_kws : dict, optional Keyword arguments for :func:`kdeplot`. rug_kws : dict, optional Keyword arguments for :func:`rugplot`. color : matplotlib color, optional Color to plot everything but the fitted curve in. vertical : bool, optional If True, observed values are on y-axis. norm_hist : bool, optional If True, the histogram height shows a density rather than a count. This is implied if a KDE or fitted density is plotted. axlabel : string, False, or None, optional If None, will try to get it If None, will try to get it from a.name if False, do not set a label. label : string, optional Legend label for the relevant component of the plot. ax : matplotlib axis, optional If provided, plot on this axis. Returns ------- ax : matplotlib Axes Returns the Axes object with the plot for further tweaking. See Also -------- kdeplot : Show a univariate or bivariate distribution with a kernel densi size determined automatically with a reference rule: ... plot:: :context: close-figs >>> import seaborn as sns, numpy as np >>> sns.set_theme(); np.random.seed(0) >>> x = np.random.randn(100) >>> ax = sns.distplot(x) Use Pandas objects to get an informative axis label: ... plot:: :context: close-figs >>> import pandas as pd >>> x = pd.Series(x, name="x variable") >>> ax = sns.distplot(x) Plot the distribution with a kernel density estimate and rug plot: ... plot:: :context: close-figs >>> ax = sns.distplot(x, rug=True, hist=False) Plot the distribution with a histogram and maximum likelihood gaussian distribution fit: ... plot:: :context: close-figs >>> from scipy.stats import norm >>> ax = sns.distplot(x, fit=norm, kde=False) Plot the distribution on the vertical axis: ... plot:: :context: close-figs >>> ax = sns.distplot(x, vertical=True) Change the color of all the plot elements: ... plot:: :context: close-figs >>> sns.set_color_codes() >>> ax = sns.distplot(x, color="y") Pass specific parameters to the underlying plot functions: ... plot:: :context: close-figs >>> ax = sns.distplot(x, rug=True, rug_kws={"color": "g"}, ... kde_kws={"color": "k", "lw": 3, "label": "KDE"}, ... hist_kws={"histtype": "step", "linewidth": 3, ... "alpha": 1, "color": "g"}) """ if kde and not hist: axes_level_suggestion = "`kdeplot` (an axes-level function for kernel density plots). " else: axes_level_suggestion = "`histplot` (an axes-level function for histograms). " msg = "`distplot` is a deprecated function and will be removed in a future version. "\ "Please adapt your code to use either `displot` (a figure-level function with "\ "similar flexibility) or " + axes_level_suggestion warnings.warn(msg, FutureWarning) if ax is None: ax = plt.gca() # Intelligently label the support axis label_ax = bool(axlabel) if axlabel is None and hasattr(a, "name"): axlabel = a.name if axlabel is not None: label_ax = True # Support new-style API if x is not None: a = x # Make a a 1-d float array a = np.asarray(a, float) if a.ndim > 1: a = a.squeeze() # Drop null values from array a = remove_na(a) # Decide if the hist is normed norm_hist = norm_hist or kde or fit is not None # Handle dictionary defaults hist_kws = {} if hist_kws is None else hist_kws.copy() kde_kws = {} if kde_kws is None else kde_kws.copy() rug_kws = {} if rug_kws is None else rug_kws.copy() fit_kws = {} if fit_kws is None else fit_kws.copy() # Get the color from the current color cycle if color is None: if vertical: line, = ax.plot(0, a.mean()) else: line, = ax.plot(a.mean(), 0) color = line.get_color() line.remove() # Plug the label into the right kwarg dictionary if bin ディレクトリには godep の実行バイナリがあり、後のすべてのコマンドに使用されるので、このディレクトリをグローバル環境変数に追加することをお勧めします

godepを使用したパッケージ管理

以下のコマンドは、プロジェクトのルートから実行されます。

開発用に依存関係を復元する

godep restore

開発プロセスでは、依存するライブラリを同期させるためにこのコマンドを使用することが推奨されます。

ダウンロードしたプロジェクトに Godeps.json ファイルだけが含まれ、3 つ目のライブラリが含まれていない場合、godep restore コマンドを使用して、すべての依存関係を $GOPATH\src 開発用

godep restore が実行されると、godep は次のようになります。 Godeps/Godeps.json を実行します。 go get -d -v 対応する依存パッケージを GOPATH パスへダウンロードします。

依存パッケージが保存されているパス(GOPATH の相対パス)がダウンロード URL と一致しない場合、例えば kuberbetes は github.com/kubernetes on github ですが、コードのインポートは my.io ですので、ダウンロードは成功しません、つまり godep restore は動作しません。これは手動で行うしかありません。たとえば、$GOPATH/my.io ディレクトリを作成して git clone するのです。

依存関係をチェックする 保存する

godep save

  • 現在のディレクトリが属するパッケージでインポートされているすべての外部依存関係(システムライブラリではない)を自動的にスキャンします。
  • 現在のプロジェクトにすべての依存関係をダウンロードし、ファイルを生成します。 Godeps\Godeps.json ファイル
  • がない場合は Godeps` ファイルでは、モジュール依存ディレクトリ vendor` フォルダが生成されます。

特定のバージョンに修正する必要がある三者間ライブラリを使用した開発依存関係の場合、完全にコミットしてください。 Godeps` and vendor` フォルダ

godep の下位バージョンでは godeps/_workspace をアップグレードすることをお勧めします。

godep save が正常に実行されるためには、2 つの要素が必要です。

  • 現在のパッケージ、またはスキャンされたパッケージが正常にコンパイルできること:したがって、すべての依存関係が go get または手動で現在の GOPATH パスに保存されていること。
  • 依存関係は、何らかのコード管理ツール(git、hg など)を使用している必要があります。

このコマンドはビルドのコンパイルに使用されます。3 者間ビルドツールは、ビルドパラメータの追加設定を必要とします。

godep コンパイル実行ビルド

godep でプロジェクトを管理した後、プロジェクトをコンパイルして実行したいときに go run と go build を使用してもうまくいかないことは明らかです。

なぜなら、go コマンドはサードパーティのライブラリを探すために直接 GOPATH ディレクトリに移動し、1.6 からは vendor で、godep を使ってダウンロードされた依存関係は godeps/workspace ディレクトリに置かれますが、これは依存関係の GOPATH ディレクトリを使い続けることには影響しないので、3 者間ツール自体には矛盾はありません。

そのため、使用する

godep go build XXX

godep の go コマンドは、元の go コマンドにシェルを追加し、godep go を実行すると、現在のプロジェクトのワークスペース・ディレクトリが GOPATH 変数に追加されます。

godepsディレクトリが行うこと

godep が保存するとき、godep は GOPATH パスからすべての依存パッケージコードを godeps ディレクトリにコピーし、コード管理ディレクトリを削除します。これは主に godep go ツールによる一連の操作をサポートするために使われます。特に、git clone でコードベースをダウンさせた後、通常は godep go install xxx で直接コンパイルして、golang の厳しいコードパスとパッケージ管理によるトラブルを多少緩和するために使われます。

また、IDEを使用する場合は、IDE内に vendor をGOPATHに追加すると、ジャンプしてコンパイルしてくれるので便利です。

godepのその他のコマンド

   save list and copy dependencies into Godeps
   go run the go tool with saved dependencies
   get download and install packages with specified dependencies
   path print GOPATH for dependency code
   restore check out listed dependency versions in GOPATH
   update update selected packages or the go version
   diff shows the diff between current and previously saved set of dependencies
   version show version info

上記は、golangの開発goパッケージの依存関係の管理godeの使用チュートリアルの詳細であり、goパッケージの依存関係の管理godeの使用についての詳細な情報は、スクリプトホーム他の関連記事に注意を払うしてください