golang 開発 go パッケージ 依存性管理 godep 使用法 チュートリアル
はじめに
godepはパッケージの依存性管理ツールで、最も主流のもので、原理はバージョン管理情報をスキャンして記録し、goコマンドの前にシェルを追加して依存性管理を行うことです。
- godep は golang 1.6 以降で使用することを推奨します。
-
godepはベンダに依存します 詳細はこちら
https://stackoverflow.com/questions/37237036/how-should-i-use-vendor-in-go-1-6 - ベンダーマネジメントをお願いします
インストール
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の使用についての詳細な情報は、スクリプトホーム他の関連記事に注意を払うしてください
関連
-
golang 開発 インストール go-torch フレームチャート 操作手順
-
Go言語によるスキャンスペース終了入力問題への対応
-
囲碁相互排他ロックと読み書き相互排他ロックの実装
-
Goはsync.Mapを使って、mapの同時操作問題を解決している
-
囲碁におけるクロージャーの基本原理
-
グラフの幅優先探索と深さ優先探索を実装するためのgo言語によるプログラミングを学ぶ
-
Go: 構造体を用いたインターフェース実装
-
Goはパニックによるプログラムクラッシュの問題を解決するためにdefer+recoverを使用します
-
ピン留めされたボットを使用してGoでメッセージをプッシュする例
-
Golangを他の言語と区別する9つの特徴
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン