ホームページ  >  記事  >  バックエンド開発  >  Go アプリケーションから 'op' を実行できません

Go アプリケーションから 'op' を実行できません

王林
王林転載
2024-02-10 08:42:08669ブラウズ

无法从 Go 应用程序运行“op”

php Xiaobian Yuzai は、Go 言語を使用してアプリケーションを開発するときによくある問題、つまり Go アプリケーションから "op" を実行できないという問題に遭遇することがあります。この問題により、アプリケーションが適切に機能しなくなったり、エラー メッセージが表示されたりする可能性があります。この問題を解決するには多くの方法がありますが、対応するパッケージがコードに正しくインポートされているかどうかを確認するか、関連する依存関係を再インストールすることで解決できます。また、問題に対処するために他のツールや方法も試してください。この記事の概要が、この問題に遭遇した開発者の助けになれば幸いです。

質問の内容

次のような 1password cli 実行可能ファイル op を中心とした小さな go ラッパー アプリケーションを作成しようとしています:

リーリー

ただし、次のエラーが発生し続けます:

リーリー

しかし、次のように Python スクリプトから同じことを実行すると:

リーリー

...素晴らしい出力が得られます。

興味深いことに、go アプリケーションから Python スクリプト (op.py という名前) を呼び出すと、正常に動作します (変更された go アプリケーションは次のようになります)。 リーリー

fmt.printf(...) を削除しても何も出力されないため、Python スクリプトではなく go アプリケーションによって出力されることをテストできます。 ###結論は:###

go ->

op
    : 機能しません
  • python(./op.py
  • )->
  • op: 正常に動作しています go -> python (./op.py
  • ) ->
  • op: 正常に動作しています
  • 解決策

pyenv

仮想環境から

opにアクセスするときにも同じ問題が発生しました。問題は、 pyenv の python 実行可能ファイルがユーザー (私) によって所有されていることだと思います。 所有権を root:Python インタプリタのルートとそれが存在するディレクトリに変更すると、実際に役に立ちます。舞台裏で何が起こっているのかはわかりません。 これが手順です (シンボリックリンクがルート所有のファイルを指すため、シンボリックリンクを使用しないように、--copyies を使用して仮想環境を作成しました):

リーリー

結論: op 子プロセス (およびそれが存在するディレクトリ) を生成した実行可能ファイルの所有権を

root:root

に変更します。 同じ問題であると思われる 1password に関するこの投稿も参照してください:

https://1password.community/Discussion/135768/call-cli-from-a-go-program-

以上がGo アプリケーションから 'op' を実行できませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。