나는 파이썬으로 내 자신의 패키지를 가지고 있으며 매우 자주 사용하고 있습니다. PYTHONPATH 또는 sys.path를 사용하지 않고 가져올 수 있도록 패키지를 넣어야하는 가장 우아하고 일반적인 디렉토리는 무엇입니까?
예를 들어 사이트 패키지는 어떻습니까?
/usr/lib/python2.7/site-packages
.
파이썬에서 패키지를 복사하여 붙여 넣는 것이 일반적입니까?
나는 파이썬으로 내 자신의 패키지를 가지고 있으며 매우 자주 사용하고 있습니다. PYTHONPATH 또는 sys.path를 사용하지 않고 가져올 수 있도록 패키지를 넣어야하는 가장 우아하고 일반적인 디렉토리는 무엇입니까?
예를 들어 사이트 패키지는 어떻습니까?
/usr/lib/python2.7/site-packages
.
파이썬에서 패키지를 복사하여 붙여 넣는 것이 일반적입니까?
답변:
나는 일반적으로 사용자 사이트 디렉토리에 가져올 준비가 된 항목을 넣습니다.
~/.local/lib/pythonX.X/site-packages
플랫폼에 적합한 디렉토리를 표시하려면 다음을 사용할 수 있습니다. python -m site --user-site
편집 : sys.path
생성 하면에 표시됩니다 .
mkdir -p "`python -m site --user-site`"
python -m site --user-site
는 생성해야 할 디렉토리를 알려줍니다. sys.modules
실제로 만들 때까지 표시되지 않습니다 .
mkdir
하는 mkdir -p
중간 디렉토리를 만들 수 있습니다. 나는 심지어 ~/.local
. ;-)
따라서 저와 같은 초보자와 디렉토리가 잘 구성되어 있지 않은 경우이 방법을 시도해 볼 수 있습니다.
파이썬 터미널을 엽니 다. 제 경우에는 numpy와 같은 작업을 아는 모듈을 가져오고 다음을 수행하십시오.
Import numpy
numpy.__file__
결과적으로
'/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site- packages/numpy/__init__.py'
결과는 numpy.__file__
모듈 (제외 numpy/__init__.py
) 과 함께 파이썬 파일을 넣어야하는 위치 입니다.
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site- packages
이렇게하려면 터미널로 이동하여
mv "location of your module" "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site- packages"
이제 모듈을 가져올 수 있습니다.
re.__file__
은 나를 위해 일했습니다.
이것은 나를 위해 작동하는 것입니다 (비공개 pip 저장소에 업로드되는 Python 패키지를 자주 만들어야 함). 질문에 대한 @joran의 의견에 대해 자세히 설명합니다.
python setup.py sdist --format=tar
. 생성 된 패키지는 이상적으로 dist
폴더 에 있어야 합니다.pip install <yourpackage>.tar
pip install --force-reinstall
라이브러리를 더 많이 사용하고 dist 패키지를 다시 만들어야하는 경우 사용할 수 있습니다 .
이 방법이 저에게 효과적이라는 것을 알았습니다. 로컬이 아닌 다른 시스템에서 사용하기 위해 모듈을 패키징 할 필요가없는 경우이 방법은 과도 할 수 있습니다.
해피 해킹.
가져 오기 폴더는 다음 소스 코드를 추가하여 추출 할 수 있습니다.
import sys
print sys.path
자동 심볼릭 링크 생성 예는 다음과 같습니다.
ln -s \`pip show em | grep "Location"| cut -d " " -f2\` \`python -m site --user-site\`
"em"대신 "방금 설치했지만 파이썬이 볼 수 없습니다"다른 패키지를 사용할 수 있습니다.
아래에서 코멘트에서 요청 된 내용에 대해 자세히 설명하겠습니다.
다음 명령을 사용하여 python 모듈 em 또는 pyserial을 설치했다고 가정합니다 (예는 우분투 용).
sudo pip install pyserial
출력은 다음과 같습니다.
Collecting pyserial
Downloading pyserial-3.3-py2.py3-none-any.whl (189kB)
100% |████████████████████████████████| 194kB 2.3MB/s
Installing collected packages: pyserial
Successfully installed pyserial-3.3
질문은 다음과 같습니다-파이썬은 pyserial 모듈을 볼 수 없습니다. 왜? 모듈이 설치된 위치는 파이썬이 특정 사용자 계정을 찾고있는 위치가 아니기 때문입니다.
해결책-pyserial이 파이썬이 찾고있는 경로에 도착한 경로에서 심볼릭 링크를 만들어야합니다.
symlink 생성 명령은 다음과 같습니다.
ln -s <what_to_link> <where_to_link>
정확한 위치를 입력하는 대신 명령을 실행하여 모듈을 저장 한 위치를 pip에 요청합니다.
pip show pyserial | grep "Location"| cut -d " " -f2
정확한 위치를 입력하는 대신 명령을 실행하여 설치되는 모듈을 찾는 위치를 Python에 요청합니다.
python -m site --user-site
두 명령 모두 "`"문자로 이스케이프해야합니다 (일반적으로 미국 키보드의 경우 1 버튼 왼쪽에 있음).
결과적으로 ln에 대해 다음 명령이 제공되고 누락 된 심볼릭 링크가 생성됩니다.
ln -s /usr/local/lib/python2.7/dist-packages /home/<your_username>/.local/lib/python2.7/site-packages
또는 배포판 및 python / pip 기본값에 따라 비슷한 것입니다.