[python] 가져올 수 있도록 내 파이썬 모듈을 어디에 두어야합니까?

나는 파이썬으로 내 자신의 패키지를 가지고 있으며 매우 자주 사용하고 있습니다. 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의 의견에 대해 자세히 설명합니다.

  1. 패키지를 생성하기위한 작업 공간으로 사용되는 “빌드 디렉토리”를 생성합니다. 선택한 디렉토리는
  2. 거기에 파이썬 패키지 디렉토리를 복사하고 setup.py 파일을 만듭니다. 이것은 setup.py를 올바르게 만드는 데 도움 될 것입니다.
  3. 작업중인 프로젝트에 대한 virtualenv 를 만듭니다 . virtualenv에는 다른 많은 이점이 있습니다. 여기서는 자세히 설명하지 않습니다.
  4. 로컬 dist 패키지를 만듭니다 python setup.py sdist --format=tar. 생성 된 패키지는 이상적으로 dist폴더 에 있어야 합니다.
  5. 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.


답변