pip는 패키지를 성공적으로 설치하지만 명령 줄에서 찾을 수없는 실행 파일


110

Mac OS X Yosemite, 버전 10.10.3에서 작업하고 있습니다.

http://johnlaudun.org/20150512-installing-and-setting-pip-with-macports/ 에서 수행 한대로 macport를 사용하여 python2.7 및 pip를 설치했습니다.

패키지를 성공적으로 설치하고 Python 환경 및 Python 스크립트 내에서 가져올 수 있습니다. 그러나 터미널의 명령 줄에서 호출 할 수있는 패키지와 관련된 실행 파일을 찾을 수 없습니다.

누구든지 무엇이 잘못되었는지 알고 있습니까? (자세한 내용은 아래 참조)

예를 들어 http://wiki.ros.org/jade/Installation/Source에 설명 된 대로 "rosdep"라는 패키지를 설치하는 동안

실행할 수 있습니다 : sudo pip install -U rosdep 오류없이 설치되며 해당 파일이/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

그러나 실행하려고하면 : sudo rosdep init, 오류가 발생합니다."sudo: rosdep: command not found"

이것은 패키지 특정 오류가 아닙니다. 내 컴퓨터에서 pip를 사용하여 설치된 모든 패키지에 대해 이것을 얻습니다. 나는 심지어 추가를 시도했다

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

$PATH. 그러나 패키지가 파이썬 내에서 완벽하게 작동하더라도 실행 파일은 명령 줄에서 찾을 수 없습니다.


관련된 virtualenv가 있습니까?
JL Peyret

아니요, virtualenv가 관련되어 있지 않습니다.
Sanket_Diwale

당신은 sudo를 할 때, 당신은 루트 사용자의 $ PATH에로 전환, 단지 확인 자신의 PATH가 업데이트 아닌, PATH 만들기
앤소니 페로

답변:


48

$ PATH 확인

tox 명령 줄 모드가 있습니다.

audrey:tests jluc$ pip list | grep tox
tox (2.3.1)

어딨어?

(편집 다음 2.7물건 하나에 많은 여기에 서브를 중요하지 않습니다 3.x및 핍의 같은 방법으로 거의 행동)

audrey:tests jluc$ which tox
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/tox

내 $ PATH에 무엇이 있습니까?

audrey:tests jluc$ echo $PATH
/opt/chefdk/bin:/opt/chefdk/embedded/bin:/opt/local/bin:..../opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin...

통지 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin를 ? 그것이 내 pip 설치 항목을 찾을 수있게 해주는 것입니다.

지금은 상황이 파이썬 어디에서,이 (대체 일을하려고 볼 수 있습니다 rosdep를 들어 tox).

$python
>>> import tox
>>> tox.__file__

출력 :

'/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tox/__init__.pyc'

이제 CD 위의 디렉토리 오른쪽 lib위이다. bin 디렉토리 가 보이 십니까? 당신이 볼 수 있나요 rosdep그 빈에? 그렇다면 bin$ PATH에 추가해보십시오 .

audrey:2.7 jluc$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.7
audrey:2.7 jluc$ ls -1

산출:

Headers
Python
Resources
bin
include
lib
man
share

답변에 대해 JL에게 감사하지만 이것은 주로 내 문제입니다. 내 예제 앱 rosdep의 경우, 내가했던대로하면 다음과 같은 결과가 나옵니다. pip list | 그렙 rosdep rosdep (0.11.4)하는 rosdep (NO 출력), 명령 줄 아무것도 반환하지 않습니다
Sanket_Diwale

1
이는 반환하지이 rosdep문제와 일치한다. 내 요점은 rosdep설치 위치와 $ PATH의 모양 을 찾아야한다는 것입니다.
JL Peyret

감사합니다. /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin에도 바이너리가 설치되었습니다. PATH에 추가하고 이제 작동합니다. 감사합니다. 출력을 제공하지 않는 바이너리를 찾는 데 문제가있었습니다.
Sanket_Diwale

수출 PATH = / 옵션 / 지역 / 라이브러리 / 프레임 워크 / Python.framework / 버전 / / 빈 2.7 : $ PATH 내 경로에 누락 OSX에 나를 위해 속임수를 썼는지 한
카 이오 이글 레시아

1
프로그램을 찾을 수없는 which경우 (아직 경로에없는 경우), mlocateLinux 또는 mdfindmacOS에서 사용하여 바이너리를 찾을 수도 있습니다 .
jackcogdill

54

기본 Python 설치를 사용하는 macOS에서는 /Users/<you>/Library/Python/2.7/bin/$ PATH 에 추가 해야합니다.

이것을 .bash_profile에 추가하십시오.

export PATH="/Users/<you>/Library/Python/2.7/bin:$PATH"

pip가 실행 파일을 설치하는 곳입니다.

팁 : 기본이 아닌 Python 버전 which python의 경우 Python 설치 위치를 찾고 위의 경로에서 해당 부분을 바꿉니다. (힌트 Sanket_Diwale에 감사드립니다)


8
pip가 설치되는 위치는 python을 설치 한 방법에 따라 다르며 MacOS에는 macports, homebrew 및 시스템 기본값과 같은 Python을 설치하는 여러 방법이 있습니다. 사용중인 Python 버전에 따라 pip의 위치가 다릅니다. pip와 python이 어디에 있는지 알아내는 쉬운 방법은 터미널에서 "which python"을 사용한 다음 적절한 위치를 $ PATH에 추가하는 것입니다.
Sanket_Diwale

python.org에서 Python 3.6을 설치하는 macOS 10.14.3의 경우 which python3결국 (링크를 통해) /Library/Frameworks/Python.framework/Versions/3.6/bin/.
phoenix

42

--user(예 pip3.6 install --user tmuxp) 를 사용하여 설치하는 경우 site모듈을 사용하여 Python 자체에서 플랫폼 별 사용자 설치 디렉토리를 가져올 수 있습니다. 예를 들어 macOS의 경우 :

$ python2.7 -m site --user-base
/Users/alexp/Library/Python/2.7

여기에 추가 /bin하면 패키지 실행 파일이 설치 될 경로가 생겼습니다. 출력을 기반으로 쉘의 rc 파일에 PATH를 동적으로 채울 수 있습니다. 나는 bash를 사용하고 있지만 운이 좋으면 이식 가능합니다.

# Add Python bin directories to path
python3.6 -m site &> /dev/null && PATH="$PATH:`python3.6 -m site --user-base`/bin"
python2.7 -m site &> /dev/null && PATH="$PATH:`python2.7 -m site --user-base`/bin"

정확한 Python 버전을 사용하여 Python이 부 버전을 3.5에서 3.6으로 업그레이드 할 때 실행 파일이 "사라질"가능성을 줄입니다. 위에서 볼 수 있듯이 사용자 설치 경로에 Python 버전이 포함될 수 있기 때문에 사라집니다. 따라서 python33.5 또는 3.6을 가리킬 수 있지만 python3.6항상 3.6을 가리킬 것입니다. 사용 예를 들어, 추가 패키지를 설치할 때이 요구를 염두에 보관해야합니다 pip3.6이상 pip3.

당신이 패키지 사라지는의 아이디어를 신경 쓰지 않으면 사용할 수 있습니다 python2python3대신 :

# Add Python bin directories to path
# Note: When Python is upgraded, packages may need to be re-installed
#       or Python versions managed.
python3 -m site &> /dev/null && PATH="$PATH:`python3 -m site --user-base`/bin"
python2 -m site &> /dev/null && PATH="$PATH:`python2 -m site --user-base`/bin"

21

macOS에 대해 묻는 질문을 알고 있지만 여기에 Google을 통해 여기에 도착 하는 Linux 사용자를 위한 솔루션 이 있습니다.

pip를 통해 pdfx 패키지를 설치하여이 질문에 설명 된 문제가 발생했습니다 .

하지만 실행했을 때 아무것도 ...

pip list | grep pdfx
pdfx (1.3.0)

아직:

which pdfx
pdfx not found

Linux의 문제는 pip install ...스크립트를 드롭 ~/.local/bin하고 이것이 기본 Debian / Ubuntu가 아니라는 것입니다 $PATH.

자세한 내용은 GitHub 문제입니다. https://github.com/pypa/pip/issues/3813

해결하려면, 단지 추가 ~/.local/bin당신에게 $PATH당신에 다음 라인을 추가하여, 예를 들어, .bashrc파일 :

export PATH="$HOME/.local/bin:$PATH"

그 후 셸을 다시 시작하면 예상대로 작동합니다.


2
셸을 다시 시작하는 대신 구성 source ~/.bashrc을 다시로드 할 수 .bashrc있습니다.
Whiteclaws dec

1
큰. 나는 "tox command not found"를 받고 있었다. PATH 업데이트 후 작동합니다
GabrielBB

4

해결책

에 대한 다른 답변을 기반으로 linux하고 mac다음을 실행할 수 있습니다 :

echo "export PATH=\"`python3 -m site --user-base`/bin:$PATH\"" >> ~/.bashrc
source ~/.bashrc

대신 python3: 당신은 파이썬 버전에 다른 링크를 사용할 수 있습니다 python, python2.7, python3.6, python3.9, 등

설명

현재 OS (win, mac, linux)에서 사용자 패키지가 설치된 위치를 알기 위해 다음을 실행합니다.

python3 -m site --user-base

스크립트 bin/는 패키지가 설치된 폴더로 이동한다는 것을 알고 있습니다.

따라서 경로를 연결합니다.

echo `python3 -m site --user-base`/bin

그런 다음 환경 변수로 내 보냅니다.

export PATH=\"`python3 -m site --user-base`/bin:$PATH\""

마지막으로 내보내기 명령을 반복하지 않기 위해 .bashrc파일에 추가 source하고 새로운 변경 사항을 실행 하기 위해 실행하여 처음에 언급 한 제안 된 솔루션을 제공합니다.


이것은 나를 위해 일했고 이유를 모르겠습니다
Benjamints

@Benjamints가 설명을 추가했습니다. 도움이되기를 바랍니다. 행운을 빕니다!
Willemoes

대단히 감사합니다! :)
Benjamints

3

Windows에서는 경로에 경로 %USERPROFILE%\AppData\Roaming\Python\Scripts를 추가 해야합니다.


2

PyPI 패키지를 만들고 성공적으로 빌드하고 게시했지만 설치 후 실행할 수 없었기 때문에이 질문을 우연히 발견했습니다. $PATH변수가 올바르게 설정했다.

내 경우에는 문제는 내가 설정하지 않은 것이 었습니다 entry_point에서 setup.py파일 :

entry_points = {'console_scripts':

['YOUR_CONSOLE_COMMAND=MODULE_NAME.FILE_NAME:FUNCTION_NAME'],},

2

파이썬의 bin디렉토리를 $PATH변수 에 추가하는 것 외에도 그 디렉토리의 소유자를 변경해야 작동합니다. 내가 왜 이미 주인이 아니 었는지 모르겠다.

chown -R ~/Library/Python/

0

MacOS 설치 프로그램 (Python 웹 사이트에서 다운로드)을 사용하여 Python 또는 Python3을 설치하면 스크립트에 exporter가 추가 ~/.profile됩니다. 당신이해야 할 일은 그저 source그것 뿐입니다 . 모든 터미널을 다시 시작하는 것도 트릭을 수행해야합니다.

경고-향후 혜택을 위해 Python3과 함께 pip3를 사용하는 것이 더 낫다고 생각합니다.

Python3이 이미 설치되어있는 경우 macOS Mojave에서 다음 단계가 작동합니다.

  1. sudo-를 사용하여 먼저 ansible 설치sudo -H pip3 install ansible

  2. 파이썬 bin경로에 대한 심볼릭 링크를 만듭니다.

sudo ln -s /Library/Frameworks/Python.framework/Versions/Current/bin /Library/Frameworks/Python.framework/current_python_bin

그리고 그것을 스테이플 .profile

export PATH=$PATH:/Library/Frameworks/Python.framework/current_python_bin

  1. source ~/.profile모든 터미널 셸을 실행 하고 다시 시작합니다.

  2. 유형 ansible --version

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.