답변:
이전 디렉토리와 PYTHONPATH
콜론으로 구분 하여 환경 변수에 새 디렉토리를 추가해야합니다 . 유닉스의 모든 형태에서, 당신은 사용중인 쉘 ( .profile
또는 좋아하는 쉘에 따라)에 해당하는 시작 스크립트에서 해당 쉘 에 의존하는 명령으로이를 수행 할 수 있습니다. Windows에서는 시스템 GUI를 통해이를 수행 할 수 있습니다.
superuser.com
선택한 플랫폼과 셸에서 환경 변수를 강화하는 방법에 대한 세부 정보가 필요한 경우 자세한 내용을 문의하는 것이 좋습니다. 실제로 프로그래밍 문제가 아니기 때문입니다.
bash (Mac 또는 GNU / Linux 배포판)를 사용하는 경우 bash를 ~/.bashrc
export PYTHONPATH="${PYTHONPATH}:/my/other/path"
조작하는 대신 경로 구성 파일을PYTHONPATH
만들 수도 있습니다 . 먼저 파이썬이이 정보를 검색하는 디렉토리를 찾으십시오.
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"
python -m site --user-site
가고 있었지만 (create the directory if it doesn't exist)
부품 과 부품은 제대로 작동하지 않았습니다.
somelib.pth
합니까? 그렇지 않은 경우 왜 이것이 작동하지 않을 수 있을까요?
이것은 Windows에서 작동합니다
그런 다음 스크립트에서 해당 경로 내의 모든 모듈을 볼 수 있습니다.
여전히 혼란 스러울 경우-Mac 사용자 인 경우 다음을 수행하십시오.
open .bash_profile
export PYTHONPATH=$PYTHONPATH:foo/bar
export
열쇠는 내가 잃어버린 물건이었다! !!!, 공감, 감사합니다!
pythonrc 파일을 통해 경로를 추가 할 수 있으며 Linux의 경우 ~ / .pythonrc가 기본값입니다. 즉.
import sys
sys.path.append('/path/to/dir')
당신은 또한 설정할 수 PYTHONPATH
등 글로벌 rc 파일에 환경 변수를 ~/.profile
맥이나 리눅스, 또는 제어판을 통해 -> 시스템 -> 고급 탭 -> 창에 환경 변수.
(언급 한 바와 같이 조금 더 설명을 제공하기 위해, 파이썬은 자동으로 검색 경로를 구성합니다 이상 과 여기 사용) site.py
(일반적으로 sys.prefix +에있는 스크립트 lib/python<version>/site-packages
뿐만 아니라 lib/site-python
). sys.prefix의 값을 얻을 수 있습니다.
python -c 'import sys; print(sys.prefix)'
site.py 스크립트는 다음과 같은 플랫폼에 의존 디렉토리의 숫자를 추가 /usr/{lib,share}/python<version>/dist-packages
, /usr/local/lib/python<version>/dist-packages
검색 경로 도 이러한 경로 검색 <package>.pth
특정 추가 검색 경로를 포함 할 경우 구성 파일을. 예를 들어, easy-install 은 시스템 특정 파일에 추가 된 설치된 패키지 모음을 유지 관리합니다 (예 : Ubuntu it 's) /usr/local/lib/python2.7/dist-packages/easy-install.pth
. 일반적인 시스템에는 sys.path의 예기치 않은 경로를 설명 할 수있는이 .pth 파일이 많이 있습니다.
python -c 'import sys; print(sys.path)'
따라서 .pth 파일을 만들고이 디렉토리 ( 위에서 언급 한 sitedir 포함) 중 하나에 넣을 수 있습니다 . 이것은 PYTHONPATH를 사용하는 대신 대부분의 패키지가 sys.path에 추가되는 방식 인 것 같습니다.
참고 : OSX에는 'framework builds'에 대해 site.py에 의해 추가 된 특별한 추가 검색 경로가 있습니다 (그러나 파이썬의 일반적인 명령 행 사용에서는 작동하는 것 같습니다) : /Library/Python/<version>/site-packages
(예 : Python2.7 :) /Library/Python/2.7/site-packages/
이것은 타사 패키지가있는 곳입니다. 설치 될 것입니다 (해당 디렉토리의 README 참조). 따라서 추가 검색 경로가 포함 된 경로 구성 파일을 추가 할 수 있습니다. 예 /Library/Python/2.7/site-packages/pip-usr-local.pth
를 들어 /usr/local/lib/python2.7/site-packages/
, 포함 하는 파일을 만든 다음 시스템 파이썬은 해당 검색 경로를 추가합니다.
나를 위해 .bash_profile
파일을 변경했을 때 효과가 있었습니다. .bashrc
파일을 변경 하면 셸을 다시 시작할 때까지만 작동했습니다.
파이썬 2.7의 경우 다음과 같아야합니다.
export PYTHONPATH="$PYTHONPATH:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python"
.bash_profile
파일 의 끝에서 .
export PYTHONPATH="${PYTHONPATH}:/my/other/path"
~ PYTHONPATH
가 존재하지 않으면 ~ / .bashrc에 추가 해도 작동 하지 않을 수 있습니다 :
.
export PYTHONPATH="/my/other/path1"
export PYTHONPATH="${PYTHONPATH}:/my/other/path2"
위의 ~ / .bashrc에 위의 내용을 추가하면 우분투 16.04에서 트릭을 얻었습니다.
echo PYTHONPATH
했고 아무것도 나타나지 않았다 ! 즉,이 PYTHONPATH가 시작되지 않았으므로이 줄 export PYTHONPATH=$PYTHONPATH:<PATH_TO_TF>/TensorFlow/models/research/object_detection
을 내 ~/.bashrc
파일과 붙여 넣기 만하면 source ~/.bashrc
됩니다. 나중에`echo $ PYTHONPATH`했을 때 나에게 주었다. 내가 :<PATH_TO_TF>/TensorFlow/models/research/object_detection
뭔가 잘못했는지에 대한 제안?
export PYTHONPATH=<PATH_TO_TF>/TensorFlow/models/research/object_detection
, PYTHONPATH를 처음으로 내보내는 경우 ${PYTHONPATH}:
부분 없이 수행해야합니다
:<PATH_TO_TF>/TensorFlow/models/research/object_detection
하고 2를 제거합니다 export PYTHONPATH=$PYTHONPATH:/TensorFlow/models/research/slim
. 그것에 대한 제안, 그것을 고치는 방법?
아래 스크립트는 순수한 파이썬이므로 모든 플랫폼에서 작동합니다. https://docs.python.org/3/library/pathlib.html에 설명되어있는 pathlib 경로 를 사용하여 크로스 플랫폼에서 작동합니다. 한 번만 실행하고 커널을 다시 시작하면됩니다. https://medium.com/@arnaud.bertrand/modifying-python-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))
이것은이 스레드에 대한 업데이트이며 이전 답변이 있습니다.
MAC-OS 카탈리나 또는 더 새로운 (> = 10.15)을 사용하는 사람들 zsh
을 위해 (이전의 대체) 새로운 터미널이 도입되었습니다 bash
.
이 변경으로 인해 위의 답변에 약간의 문제가 있었고 파일을 만들고 ~/.zshrc
파일 디렉토리를 $PATH
and$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"
저장하고 터미널을 다시 시작했습니다.
중요 : 위의 경로는 내 컴퓨터의 경로로 설정되어 있으므로 파이썬에 맞게 조정해야합니다.
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))
virtualenv와 virtualenvwrapper를 사용하는 것이 좋습니다. 그렇지 않으면 경로가 복잡해질 것입니다.