IT이야기

PYSONPATH에 디렉터리를 영구적으로 추가하시겠습니까?

cyworld 2022. 3. 28. 21:13
반응형

PYSONPATH에 디렉터리를 영구적으로 추가하시겠습니까?

사용할 때마다sys.path.append, 새로운 디렉토리가 추가될 것이다.그러나 일단 python을 닫으면 리스트가 이전(기본값?) 값으로 되돌아간다.디렉터리를 영구적으로 추가하는 방법PYTHONPATH?

(Mac 또는 GNU/리눅스 디스트로의) bash를 사용하는 경우, 이 기능을 추가하십시오.~/.bashrc

export PYTHONPATH="${PYTHONPATH}:/my/other/path"

환경 변수에 새 디렉터리를 추가해야 하는 경우PYTHONPATH, 이전의 내용에서 결장으로 분리한다.어떤 형태로든 유닉스(Unix)에서 사용 중인 셸에 적합한 시작 스크립트에서 이 작업을 수행할 수 있음(.profile또는 좋아하는 쉘에 따라 무엇이든지) 해당 쉘에 따라 달라지는 명령어를 사용하여 Windows에서는 시스템 GUI를 통해 원하는 목적을 위해 수행할 수 있다.

superuser.com좀 더 자세히 물어보기에 더 좋은 장소일 수 있다. 즉, 선택한 플랫폼과 쉘에서 환경 변수를 어떻게 풍부하게 하는지에 대한 구체적인 사항이 필요한 경우, 프로그래밍 질문이 아니기 때문이다.

조하를 조하를 조작하는 것이다.PYTHONPATH경로 구성 파일을 생성할 수도 있다.먼저 Python이 이 정보를 검색하는 디렉터리를 확인하십시오.

python -m site --user-site

어떤 이유에서인지 이것은 파이썬 2.7에서는 효과가 없는 것 같다.여기서 사용할 수 있는 항목:

python -c 'import site; site._script()' --user-site

그런 다음.pth추가할 경로를 포함하는 해당 디렉터리의 파일(존재하지 않을 경우 디렉터리를 생성).

예를 들면 다음과 같다.

# find directory
SITEDIR=$(python -m site --user-site)

# create if it doesn't exist
mkdir -p "$SITEDIR"

# create new .pth file with our path
echo "$HOME/foo/bar" > "$SITEDIR/somelib.pth"

Windows에서 사용 가능

  1. Windows에서 Python 2.7을 사용하여 Python 설정 폴더로 이동하십시오.
  2. Lib/site-package를 여십시오.
  3. 이 폴더에 예.pth 빈 파일을 추가하십시오.
  4. 각 행에 하나씩 파일에 필요한 경로를 추가하십시오.

그러면 스크립트에서 해당 경로에 있는 모든 모듈을 볼 수 있을 겁니다.

다른 사용자가 여전히 혼란스러울 경우, Mac에 있는 경우 다음을 수행하십시오.

  1. 터미널 열기
  2. 유형open .bash_profile
  3. 표시되는 텍스트 파일에서 끝에 다음 줄을 추가하십시오.export PYTHONPATH=$PYTHONPATH:foo/bar
  4. 파일을 저장하고 터미널을 다시 시작하면 끝

pythonrc 파일을 통해 경로를 추가할 수 있으며, pythonrc는 기본적으로 Linux에서 ~/.pythonrc로 설정되어 있다.

import sys
sys.path.append('/path/to/dir')

당신은 또한 설정 할 수 있다.PYTHONPATH환경 변수(Global rc 파일)~/.profileMac 또는 Linux에서 또는 제어판 -> System -> Advanced 탭 -> Environment Variables를 통해 창에서.

좀 더 자세한 설명을 하기 위해 파이썬은 와 여기를 사용하여 자동으로 검색 경로를 구성한다.site.py+ steps에 하는 sys.lib/python<version>/site-packages게다가lib/site-pythonsys.prefix의 값을 얻을 수

python -c 'import sys; print(sys.prefix)'

사이트.그런 다음 py 스크립트는 플랫폼에 따라 다음과 같은 다수의 디렉토리를 추가한다./usr/{lib,share}/python<version>/dist-packages /usr/local/lib/python<version>/dist-packages검색 경로 및 이 경로에 대한 검색<package>.pth특정 추가 검색 경로를 포함하는 구성 파일.예를 들어 쉬운 설치는 시스템별 파일에 추가된 설치된 패키지 컬렉션을 유지 관리(예: Ubuntu에서)./usr/local/lib/python2.7/dist-packages/easy-install.pth치 않은 할 수 이 여러 개 일반적인 시스템에는 sys.path에 예기치 않은 경로를 설명할 수 있는 .pth 파일이 여러 개 있다.

python -c 'import sys; print(sys.path)'

그래서 사람들은 .pth 파일을 만들고 이러한 디렉토리들 중 하나를 넣을 수 있다(에서 언급된 sentir를 포함한다).이것은 대부분의 패키지가 PYSONPATH를 사용하는 것과 반대로 sys.path에 추가되는 방법인 것 같다.

참고: OSX에서는 site.py에서 'firm builds'를 위해 추가 검색 경로를 추가했다(그러나 python의 일반적인 명령줄 사용에는 효과가 있는 것임). /Library/Python/<version>/site-packages: (예: Python2).7의 경우:/Library/Python/2.7/site-packages/타사 패키지가 설치되어야 하는 위치(dir의 README 참조).그래서 그 안에 추가적인 검색 경로를 포함하는 경로 구성 파일을 추가할 수 있다. 예를 들어, "파일"을 만들 수 있다./Library/Python/2.7/site-packages/pip-usr-local.pth그 안에 들어 있는/usr/local/lib/python2.7/site-packages/그리고 시스템 파이썬이 검색 경로를 추가할 겁니다

MacOS에서는 특정 라이브러리에 경로를 제공하는 대신의 루트 프로젝트 폴더에 대한 전체 경로 지정

~/.bash_profile 

예를 들어, 나의 하루를 다음과 같이 만들었다.

export PYTHONPATH="${PYTHONPATH}:/Users/<myuser>/project_root_folder_path"

이 작업을 수행한 후:

source ~/.bash_profile

Linux에서는 환경 변수를 처리할 필요 없이 패키지에서 PYSONPATH 디렉토리로 심볼 링크를 생성할 수 있다.다음과 같은 경우:

ln -s /your/path /usr/lib/pymodules/python2.7/

나에게 있어 그것은 내가 그것을 바꾸었을 때 효과가 있었다..bash_profile 일요일 중. 변경 중.bashrc내가 셸을 다시 시작할 때까지만 파일이 작동했어

python 2.7의 경우 다음과 같이 표시되어야 한다.

export PYTHONPATH="$PYTHONPATH:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python"

.bash_profile파일

추가export PYTHONPATH="${PYTHONPATH}:/my/other/path"~/.csurrc는 다음과 같은 경우에 작동하지 않을 수 있다.PYTHONPATH현재 존재하지 않음(때문에):).

export PYTHONPATH="/my/other/path1"
export PYTHONPATH="${PYTHONPATH}:/my/other/path2"

위와 같은 것을 나의 ~/.bashrc에 덧붙여 우분투 16.04에 대한 트릭을 해 주었다.

썸머모의 대답을 덧붙이기 위해서, 당신은 또한 그 선을 당신의 것에 추가할 수 있다.~/.bash_profile또는~/.profile

이것은 오래된 해답이 있는 이 실의 업데이트다.

MAC-OS Catalina 또는 더 새로운 (>= 10.15)를 사용하는 사람들을 위해, 그것은 새로운 터미널이라는 이름이 도입되었다.zsh(노인을 대신하는 사람)bash).

나는 이러한 변화로 인해 위의 답변에 약간의 문제가 있었고, 파일을 만들어 어느 정도 해결했다.~/.zshrc파일 디렉토리를 에 붙여넣기$PATH그리고$PYTHONPATH

그래서 먼저 이렇게 했다.

nano ~/.zshrc

편집자가 열었을 때 다음 내용을 붙여넣었다.

export PATH="${PATH}:/Users/caio.hc.oliveira/Library/Python/3.7/bin"
export PYTHONPATH="${PYTHONPATH}:/Users/caio.hc.oliveira/Library/Python/3.7/bin"

저장한 다음 터미널을 다시 시작하십시오.

중요: 위의 경로가 내 컴퓨터의 경로로 설정되어 있으니, 당신은 그것을 당신의 비단뱀에 맞춰야 할 것이다.

아래 스크립트는 순수 파이썬이기 때문에 모든 플랫폼에서 작동한다.그것은 교차 플랫폼이 작동하도록 하기 위해 여기에 문서화된 Pathlib Path를 이용한다.한 번 실행하면 커널을 다시 시작하면 끝이다.https://medium.com/@arnaud.bertrand/s-search-path-with-pth-files-2a41a4143574에서 영감을 얻었다.실행하기 위해서는 일부 시스템 파일을 수정하기 때문에 관리자 권한이 필요하다.

from pathlib import Path
to_add=Path(path_of_directory_to_add)
from sys import path

if str(to_add) not in path:
    minLen=999999
    for index,directory in enumerate(path):
        if 'site-packages' in directory and len(directory)<=minLen:
            minLen=len(directory)
            stpi=index
            
    pathSitePckgs=Path(path[stpi])
    with open(str(pathSitePckgs/'current_machine_paths.pth'),'w') as pth_file:
        pth_file.write(str(to_add))

PYSONPATH에 새 경로 추가는 다음을 통해 수동으로 수행된다.

터미널에서 ~/.csvrc 프로필에 경로 추가:

vim ~/.bashrc

다음 항목을 프로파일에 붙여넣으십시오.

export PYTHONPATH="${PYTHONPATH}:/User/johndoe/pythonModule"

그런 다음 터미널에서 코드를 실행할 때 bashrc 프로필을 소싱하십시오.

source ~/.bashrc 

이게 도움이 되길 바래.

Windows Vista, Python 3.5에서 영구적으로 추가됨

시스템 > 제어판 > 고급 시스템 설정 > 고급(탭) 환경 변수 > 시스템 변수 > (변수 열에 PYSONPATH가 보이지 않는 경우) > (클릭) 신규 > 변수 이름: PYSONPATH > 변수 값:

변수 값에 디렉터리를 입력하십시오.블루페퍼스의 답변 세부사항이다.

Python 3.6.4에서는 다음과 같은 파이썬 세션에서 sys.path를 유지할 수 있다.

import sys
import os

print(str(sys.path))

dir_path = os.path.dirname(os.path.realpath(__file__))
print(f"current working dir: {dir_path}")

root_dir = dir_path.replace("/util", '', 1)
print(f"root dir: {root_dir}")

sys.path.insert(0, root_dir)

print(str(sys.path))

나는 당신이 가상환경과 가상환경 래퍼를 사용하는 것을 강력히 제안한다. 그렇지 않으면 당신은 당신의 진로를 혼란스럽게 할 것이다.

bash에서 zsh로 전환할 때 Python 경로 문제 해결

bash에서 zsh로 전환했을 때 Python Path 문제에 부딪쳤다.

해결책은 간단했지만 나는 알아차리지 못했다.

핍이 보여줬어 대본이 blah blah또는 패키지 blah blah 되어 있다~/.local/bin 길이 아닌 것 같군

이 문제에 대한 몇 가지 해결책을 읽은 후, 나는 내 의견을 열었다..zshrc해결책이 이미 존재했다는 걸 알아내는 거지

나는 간단히 줄 하나를 풀어야 했다.

한번 보세요.

2020-10-07 13-38-17의 스크린샷

안드레이 데스티안 답에 영감을 받아, 여기 내 버전이 있다.이를 통해 사이트 패키지 디렉토리에 많은 추가 경로를 만들 수 있다.

import os

# Add paths here.  Then Run this block of code once and restart kernel. Paths should now be set.
paths_of_directories_to_add = [r'C:\GIT\project1', r'C:\GIT\project2', r'C:\GIT\project3']

# Find your site-packages directory
pathSitePckgs = os.path.join(os.path.dirname(os.__file__), 'site-packages')

# Write a .pth file in your site-packages directory
pthFile = os.path.join(pathSitePckgs,'current_machine_paths.pth')
with open(pthFile,'w') as pth_file:
    pth_file.write('\n'.join(paths_of_directories_to_add))

print(pthFile)

나는 여기 아나콘다 환경에서 이것을 할 수 있는 해결책을 찾았다: https://datacomy.com/python/anaconda/add_folder_to_path/

단지:

conda develop /your_path

A <-> B 사이의 최단 경로는 직선이다.

import sys
if not 'NEW_PATH' in sys.path:
  sys.path += ['NEW_PATH']

참조URL: https://stackoverflow.com/questions/3402168/permanently-add-a-directory-to-pythonpath

반응형