나는 파이썬으로 내 자신의 패키지를 가지고 있으며 매우 자주 사용하고 있습니다. 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`"
답변
따라서 저와 같은 초보자와 디렉토리가 잘 구성되어 있지 않은 경우이 방법을 시도해 볼 수 있습니다.
파이썬 터미널을 엽니 다. 제 경우에는 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"
이제 모듈을 가져올 수 있습니다.
답변
이것은 나를 위해 작동하는 것입니다 (비공개 pip 저장소에 업로드되는 Python 패키지를 자주 만들어야 함). 질문에 대한 @joran의 의견에 대해 자세히 설명합니다.
- 패키지를 생성하기위한 작업 공간으로 사용되는 “빌드 디렉토리”를 생성합니다. 선택한 디렉토리는
- 거기에 파이썬 패키지 디렉토리를 복사하고 setup.py 파일을 만듭니다. 이것은 setup.py를 올바르게 만드는 데 도움 이 될 것입니다.
- 작업중인 프로젝트에 대한 virtualenv 를 만듭니다 . virtualenv에는 다른 많은 이점이 있습니다. 여기서는 자세히 설명하지 않습니다.
- 로컬 dist 패키지를 만듭니다
python setup.py sdist --format=tar
. 생성 된 패키지는 이상적으로dist
폴더 에 있어야 합니다. - virtualenv에 패키지를 설치합니다 (활성화 후).
pip install <yourpackage>.tar
pip install --force-reinstall
라이브러리를 더 많이 사용하고 dist 패키지를 다시 만들어야하는 경우 사용할 수 있습니다 .
이 방법이 저에게 효과적이라는 것을 알았습니다. 로컬이 아닌 다른 시스템에서 사용하기 위해 모듈을 패키징 할 필요가없는 경우이 방법은 과도 할 수 있습니다.
해피 해킹.
답변
내 Mac에서는 sudo find / -name "site-packages"
. 그것은 나에게 같은 몇 가지 경로를했다 /Library/Python/2.6/site-packages
, /Library/Python/2.7/site-packages
하고 /opt/X11/lib/python2.6/site-packages
.
그래서 v2.7이나 v2.6을 사용한다면 모듈을 어디에 둘지 알았습니다.
도움이 되었기를 바랍니다.
답변
가져 오기 폴더는 다음 소스 코드를 추가하여 추출 할 수 있습니다.
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 기본값에 따라 비슷한 것입니다.
답변
모듈을 개발하고 있다면 이것을 따르는 것이 좋습니다.
import sys
sys.path.append("/home/mylinux/python-packages")
이제 당신이 계속 어떤 모듈 python-packages
로 가져올 수 있습니다 Python-interpreter
.