답변:
OS X 및 Homebrew를 사용하고 있습니까? 브루 파이썬 페이지 https://github.com/Homebrew/brew/blob/master/docs/Homebrew-and-Python.md이 핍과 주위에 작업 알려진 문제를 호출합니다.
나를 위해 일했다.
~ / .pydistutils.cfg 파일을 다음 내용으로 추가하여이 "빈 접두사"를 기본값으로 만들 수 있습니다.
[install] prefix=
편집 : 이 Homebrew 권장 옵션을 사용하지 마십시오 . 정상적인 pip 작업이 중단됩니다 .
pip install
운영을 중단 합니다 :(
--target
하는 방법을 아는 사람이 있습니까? pip install
정상적인 pip 작업을 중단하지 않는이 문제 (macOS에서 Homebrew의 Python)에 대한 간단한 해결책이 있다고 생각합니다.
setup.cfg
프로젝트의 루트 디렉토리에 파일 을 작성하기 __init__.py
만하면됩니다 ( 일반적으로 기본 또는 실행 파일 py 파일이있는 위치). 따라서 프로젝트의 루트 폴더가 : /path/to/my/project/
인 경우 setup.cfg
파일을 만들고 안에 마법의 단어를 넣으십시오.
[install]
prefix=
이제 해당 폴더에 대한 pip 명령을 실행할 수 있습니다.
pip install package -t /path/to/my/project/
이 명령은 해당 폴더에 대해서만 정상적으로 실행됩니다. setup.cfg
다른 프로젝트에 복사하십시오 . .pydistutils.cfg
홈 디렉토리에 쓸 필요가 없습니다 .
모듈 설치가 완료되면를 제거 할 수 있습니다 setup.cfg
.
setup.cfg
설치 후 제거 부분 에 중점 을 둡니다 . 나는 2 일 동안 내 virtualenv 환경이 왜 망가 졌는지 알아 내려고 노력했습니다 Could not install packages due to an EnvironmentError: [Errno 1] Operation not permitted: '/bin/easy_install'
. 설치 파일을 제거하면 내 정신이 회복되었습니다
OSX (mac)에서 / var / myproject라는 프로젝트 폴더를 가정
cd /var/myproject
setup.cfg
만들고 추가하십시오
[install]
prefix=
pip install <packagename> -t .
-t .
외부에 머 무르지 않고 수행 한다는 것입니다. 이 방법은 저에게 효과적이며 다른 이유는 없었습니다.
Homebrew 사용자를위한 또 다른 솔루션 *은 단순히를 사용하는 것 virtualenv
입니다.
물론, 그것은 어쨌든 대상 디렉토리의 필요성을 제거 할 수 있습니다 -그러나 그렇지 않은 경우에도 --target
가상 환경에있을 때 기본적으로 (구성 파일을 작성 / 수정하지 않고) 기본적으로 작동하는 것을 발견 했습니다.
* 나는 해결책을 말한다; 아마도 그것은 venvs를 꼼꼼하게 사용하는 또 다른 동기 일 것입니다 ...
언급 한 바와 같이, 이것은 homebrew와 함께 설치된 pip & python의 알려진 버그입니다.
~/.pydistutils.cfg
"빈 접두사"명령으로 파일 을 만들면 이 문제가 해결되지만 정상적인 pip 작업은 중단됩니다.
이 버그가 공식적으로 해결 될 때까지 옵션 중 하나는이 경우를 처리 할 고유 한 bash 스크립트를 작성하는 것입니다.
#!/bin/bash
name=''
target=''
while getopts 'n:t:' flag; do
case "${flag}" in
n) name="${OPTARG}" ;;
t) target="${OPTARG}" ;;
esac
done
if [ -z "$target" ];
then
echo "Target parameter must be provided"
exit 1
fi
if [ -z "$name" ];
then
echo "Name parameter must be provided"
exit 1
fi
# current workaround for homebrew bug
file=$HOME'/.pydistutils.cfg'
touch $file
/bin/cat <<EOM >$file
[install]
prefix=
EOM
# end of current workaround for homebrew bug
pip install -I $name --target $target
# current workaround for homebrew bug
rm -rf $file
# end of current workaround for homebrew bug
이 스크립트는 명령을 래핑하고 다음을 수행합니다.
~/.pydistutils.cfg
"빈 접두사"명령이 포함 된 파일을 만듭니다.~/.pydistutils.cfg
파일을 제거 합니다이 스크립트는 필요에 따라 변경하고 조정할 수 있지만 아이디어를 얻을 수 있습니다. 그리고 그것은 핍을 제동하지 않고 명령을 실행할 수 있습니다. 그것이 도움이되기를 바랍니다 :)
virtualenv *를 사용하는 경우 사용중인 것을 다시 확인하는 것이 좋습니다 which pip
.
당신은 /usr/local/bin/pip
당신이 당신의 환경에서 깨진 같은 것을 본다면 . virtualenv를 다시 활성화하면 다음이 수정됩니다.
VirtualEnv : $ source bin/activate
VirtualFish : $ vf activate [environ]
* : 나는 virtualfish를 사용하지만이 팁은 둘 다와 관련이 있다고 가정합니다.