[解決済み】gopathを使わずにローカルパッケージをインポートする方法
質問
私は
GOPATH
しかし、私が直面しているこの問題では役に立ちません。私は、プロジェクトに固有のパッケージを作成できるようにしたいのです。
myproject/
├── binary1.go
├── binary2.go
├── package1.go
└── package2.go
複数の方法を試しましたが、どうすれば
package1.go
で動作するように
binary1.go
または
binary2.go
といった具合でしょうか。
例えば、次のようなことができるようにしたい。
import "package1"
を実行することができます。
go build binary1.go
でパッケージが見つからないというエラーが発生することなく、すべて正常に動作します。
GOROOT
または
GOPATH
. このような機能が必要な理由は、大規模なプロジェクトのためです。複数の他のパッケージを参照したり、それらを1つの大きなファイルに保存したりする必要がないようにしたいのです。
どのように解決するのですか?
依存関係管理の概要に移動します。
-
vgo
もしあなたのgoのバージョンがx >= go 1.11
-
dep
またはvendor
もしあなたのgoのバージョンがgo 1.6 >= x < go 1.11
-
goのバージョンがある場合は手動で。
x < go 1.6
編集3:Go 1.11には、以下の機能があります。
vgo
となります。
置き換える
dep
.
を使用する場合
vgo
を参照してください。
モジュール
のドキュメントを参照してください。以下、TLDR。
export GO111MODULE=on
go mod init
go mod vendor # if you have vendor/ folder, will automatically integrate
go build
このメソッドは
go.mod
をプロジェクトディレクトリにコピーします。そして、プロジェクトをビルドする際に
go build
. もし
GO111MODULE=auto
が設定されている場合、プロジェクトは
$GOPATH
.
編集2:ベンダリングの方法はまだ有効で、問題なく動作します。
vendor
は、主に手作業で行われるため、この
dep
と
vgo
が作成されました。
編集1:私の古い方法は機能しますが、それはもはや正しい方法とは言えません。あなたは
ベンダー
の能力を向上させることができます。
vgo
または
dep
(現時点では) Go 1.6 でデフォルトで有効になっています。
見る
. 基本的に、quot;外部または依存するパッケージを
vendor
コンパイル時に、コンパイラはこれらのパッケージを最初に使用します。
見つかりました。でローカルパッケージのインポートができました。
GOPATH
のサブフォルダを作成することで
package1
でインポートし
import "./package1"
で
binary1.go
と
binary2.go
のようなスクリプトを作成します。
バイナリ1.go
...
import (
"./package1"
)
...
というわけで、現在の私のディレクトリ構成は以下のようになっています。
myproject/
├── binary1.go
├── binary2.go
├── package1/
│ └── package1.go
└── package2.go
また、(少なくとも go 1.5 では)相対パスも機能することに留意する必要があります。
import "../packageX"
関連
-
[解決済み] __init__.py でも「非パッケージで相対的なインポートを試みた」を修正する方法
-
[解決済み] Goで配列を反転させるにはどうしたらいいですか?
-
[解決済み] Rを再起動せずにパッケージをアンロードする方法
-
[解決済み] Go モジュールのローカル リポジトリとして Artifactory を使用する方法
-
[解決済み] GORMでレコードを作成・更新するには?
-
[解決済み] Goで構造体のフィールドを反復処理する
-
[解決済み] SDL2 パッケージを提供する必要なモジュールはありません。
-
[解決済み] 地図をコピーするには?
-
[解決済み] golangでnilはどういう意味ですか?
-
[解決済み】関数宣言の構文:関数名の前に括弧でくくられたもの
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
go build error, error can't load package: package xxx is not in GOROOT (D:\basic_tool╱GoGoSrc╱)
-
golang インストールプロンプト:ダイヤル tcp 216.58.200.241:443: connectex: 接続の試行に失敗しました。
-
[解決済み] GOBINが設定されていない:go installを実行できない
-
[解決済み] go getコマンドとgo mod downloadコマンドの違いは何ですか?
-
[解決済み] インポートサイクル不可
-
[解決済み] Golang 構造体へのキャストインターフェイス
-
[解決済み] gofmtの使い方を教えてください。
-
[解決済み] パッケージ <package_name> を提供するモジュールの go.sum のエントリがありません。
-
パッケージ "github.com/gorilla/websocket" を見つけることができません。
-
[解決済み】なぜmake()やnew()をするのでしょうか?)