가져올 수 있도록 내 파이썬 모듈을 어디에 두어야합니까?
나는 파이썬으로 내 자신의 패키지를 가지고 있으며 매우 자주 사용하고 있습니다. 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>
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.
'program tip' 카테고리의 다른 글
TortoiseGit 수정 된 기호 (아이콘 오버레이)가 업데이트되지 않음 (0) | 2020.11.13 |
---|---|
unlist ()가 R에서 날짜를 죽이는 이유 (0) | 2020.11.12 |
컴파일러가 아닌 C ++ 인터프리터를 사용 했습니까? (0) | 2020.11.12 |
USB로 연결된 Android 모바일 장치에서 PC의 로컬 호스트에 액세스 (0) | 2020.11.12 |
내 로그가 std 네임 스페이스에있는 이유는 무엇입니까? (0) | 2020.11.12 |