>  기사  >  백엔드 개발  >  Go 애플리케이션에서 'op'을 실행할 수 없습니다.

Go 애플리케이션에서 'op'을 실행할 수 없습니다.

王林
王林앞으로
2024-02-10 08:42:08667검색

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

php 편집기 Yuzai는 Go 언어를 사용하여 애플리케이션을 개발할 때 일반적인 문제에 직면할 수 있습니다. 즉, Go 애플리케이션에서 "op"를 실행할 수 없습니다. 이 문제로 인해 애플리케이션이 제대로 작동하지 않거나 오류 메시지가 표시될 수 있습니다. 이 문제를 해결하는 방법은 여러 가지가 있는데, 해당 패키지가 코드에서 올바르게 가져왔는지 확인하거나 관련 종속성을 다시 설치하여 해결할 수 있습니다. 또한 문제를 해결하기 위해 다른 도구나 방법을 사용해 보십시오. 이 기사의 소개가 이 문제에 직면한 개발자에게 도움이 되기를 바랍니다.

질문 내용

다음과 같이 1password cli 실행 파일 op 주위에 작은 go 래퍼 애플리케이션을 작성하려고 합니다.

으아악

그러나 다음 오류가 계속 발생합니다.

으아악

하지만 다음과 같이 Python 스크립트에서 동일한 작업을 수행할 때:

으아악

...훌륭한 결과물을 얻었습니다.

흥미롭게도 Go 앱에서 Python 스크립트(op.py라는 이름)를 호출하면 제대로 작동합니다(수정된 Go 앱은 다음과 같습니다).

으아악

Python 스크립트가 아닌 go 애플리케이션에 의해 인쇄되고 있는지 테스트할 수 있습니다. fmt.printf(...)를 제거하면 아무것도 인쇄되지 않기 때문입니다.

요약하자면:

  • 이동 -> op: 작동하지 않음
  • python(./op.py)-> ./op.py)-> op: 잘 작동함
  • go -> python(./op.py) -> 잘 작동합니다 ./op.py) -> op
해결 방법

pyenv 가상 환경에서

에 액세스할 때 동일한 문제가 발생했습니다. 문제는 pyenv의 python 실행 파일이 사용자(나)의 소유라는 것입니다. pyenv 虚拟环境访问 op 时遇到同样的问题。我认为问题是 pyenv 的 python소유권을 루트로 변경하면 Python 인터프리터의 루트와 이것이 있는 디렉터리가 실제로 도움이 됩니다. 뒤에서 무슨 일이 일어나고 있는지 잘 모르겠습니다. 단계는 다음과 같습니다. (심볼릭 링크를 사용하지 않도록 가상 환경을 생성하기 위해

를 사용했습니다. 심볼릭 링크는 루트 소유 파일을 가리키기 때문입니다):

으아악 --copies최하위:

하위 프로세스(및 해당 디렉터리)를 생성한 실행 파일의 소유권을 root:root

로 변경하세요. op 子进程的可执行文件(及其所在目录)的所有权更改为 root:root 동일한 문제로 보이는 1password의 이 게시물도 참조하세요:

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

위 내용은 Go 애플리케이션에서 'op'을 실행할 수 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제