저는 bash
쉘로 MacOSX를 사용 하고 있습니다. 다음과 같이 만든 심볼릭 링크가 있습니다.
ln -s /usr/bin/python python2
python2를 사용하는 패키지가 있으며 현재 작업 디렉토리에 /usr/bin/python
실제로 python2 인 심볼 링크를 만들고 싶습니다 . python2
명령 줄에서 수행 하면이 오류가 발생합니다.
python2: realpath couldn't resolve "/usr/bin/python2"
그러나 이와 같이 호출 ./python2
하면 경로가 올바르게 해결됩니다. 내가 PATH
이 .
안에. 실제로 테스트를 위해 수정 .
했습니다.
이 문제를 어떻게 해결합니까? 감사!
문맥
아래의 여러 제안 솔루션이 효과가 없습니다. 나는 사람들이 텍스트에 빠지지 않도록 가능한 한 집중적이고 간단한 질문을 시도했지만 분명히 더 많은 배경을 제공해야합니다.
git에서 복제 한 패키지를 개발하려고합니다. 원래 패키지 git-multimail
는 Linux의 일부 변형에서 개발되었습니다 (우분투 추측). MacOSX에서 가능한 한 적은 수정으로 테스트 스위트를 사용할 수 있도록 수정하려고했습니다. 제안 된 솔루션 중 일부가 이상적이지 않은 이유는 다음과 같습니다.
루트
python2
로 / usr / bin /에 심볼릭 링크를 만드십시오 . 이것을 필요로하지 않는 솔루션을 찾고 있습니다. 이것은 처음에는 명백한 옵션 이었지만 가능한 적은 호스트 시스템을 수정하는 솔루션을 원합니다. 그렇기 때문에 현재 작업 디렉토리에 임시 심볼릭 링크를 만들고 CWD (예 :).
를 경로에 추가 한 다음 완료되면 (예 : 심볼릭 링크)이를 삭제하려고했습니다.래퍼 스크립트를 작성하여 기존 파이썬으로 파이썬 스크립트를 호출하십시오. 이것의 문제점은 많은 테스트 스위트가 정확한 실행 환경을 찾기 위해 shebang에 따라 실제 script_files를 실행 파일로 사용한다는 것입니다. 이것은 테스트 스위트를 상당히 편집하는 것을 의미합니다. 이러한 맥락에서 (테스트 프레임 워크의 스 니펫은 아래 참조) 모든
.py
파일에 대해 래퍼를 추가해야 합니다. 또한 사용자 / 개발자는 사용중인 시스템에 따라 패키지를 사용하기위한 다른 규칙을 알고 있어야합니다 (예 : MacOSX에서는 래퍼를 통해 호출하거나 명시 적으로 호출하지 않고는 파이썬 파일을 사용하지 않아야합니다/usr/bin/python file.py
).#! /bin/sh D=$(cd $(dirname "$0") && pwd) MULTIMAIL="$D/../git-multimail/git_multimail.py" POST_RECEIVE="$D/../git-multimail/post-receive" TESTREPO=$("$D/create-test-repo") HOME="$D" XDG_CONFIG_HOME="$D" GIT_CONFIG_NOSYSTEM=1 export HOME XDG_CONFIG_HOME GIT_CONFIG_NOSYSTEM cd $TESTREPO test_email() { REFNAME="$1" OLDREV="$2" NEWREV="$3" echo "$OLDREV" "$NEWREV" "$REFNAME" | USER=pushuser "$MULTIMAIL" }
모든 변경
python2
에 대한 참조를python
. README는 이것을 제안하지만, 실제로는 (의미 적으로) 그렇지 않을 때 시스템이 변경 사항을 새 버전으로 인식하기 때문에 버전 제어를 효과적으로 쓸모 없게 만듭니다.
나는 (3)을 사용했지만 더 나은 해결책을 찾으려고 노력하고 있습니다. 나는 이것이 상황과 같은 방식이라는 것을 기꺼이 받아들입니다 (즉, 'python2'를 /usr/bin/python
테스트 스위트 및 실제 프레임 워크에 대한 많은 변경없이 이식 가능하고 눈에 거슬리지 않음 을 가리키는 적절한 방법이 없습니다 ).
git-multimail.py
그것이 #!/usr/bin/env python2
, 그래서이 작업을 수행하는 (상대적으로) 간단한 방법이있다.
ln -s /usr/bin/python2.7 /usr/local/bin/python2
가 없었지만
ln -s /usr/bin/python /usr/bin/python2