program tip

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

radiobox 2020. 11. 12. 08:06
반응형

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


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

instead of typing exact location we are asking pip to tell us where it stored modules by executing command:

pip show pyserial | grep "Location"| cut -d " " -f2

instead of typing exact location we are asking python to tell us where it looks for the modules being installed by executing command:

python -m site --user-site

both commands has to be escaped with "`" character (usually on the left of your 1 button for the US keyboards)

in result following command will be provided for ln and the missing symlink would be created:

ln -s /usr/local/lib/python2.7/dist-packages /home/<your_username>/.local/lib/python2.7/site-packages 

or something similar, depending on your distro and python/pip defaults.

참고URL : https://stackoverflow.com/questions/16196268/where-should-i-put-my-own-python-module-so-that-it-can-be-imported

반응형