ERROR: file or directory not found
pytest 시 import package의 path가 sys.path에 등록되지 않아 module을 불러올 수 없는 상태이다.
1) python이 실행과 동시에 env 설정 / mac (/.zshrc), Windows(/.bashrc)
# 경로 등록
export PYTHONPATH="/Users/code/~"
# 다수의 경로 등록
export PYTHONPATH="/Users/code/~:/Users/workspace/~"
2) python 환경 변수
PYTHONHOME
표준 Python 라이브러리의 위치를 변경합니다. 기본적으로 라이브러리는 prefix/lib/pythonversion
및 exec_prefix/lib/pythonversion
에서 검색됩니다. 여기서 prefix
와 exec_prefix
는 설치에 따라 다른 디렉토리입니다. 둘 다 /usr/local
로 기본 설정됩니다. PYTHONHOME
이 단일 디렉토리로 설정되면 그 값이 prefix
와 exec_prefix
를 모두 대체합니다. 이를 다른 값으로 지정하려면 PYTHONHOME
을 prefix:exec_prefix
로 설정하십시오.
PYTHONPATH
PYTHONPATH
은 모듈 파일의 기본 검색 경로를 확장하는 환경 변수입니다. 이 변수는 셸의 PATH
와 동일한 형식으로 지정됩니다. 즉, 하나 이상의 디렉토리 경로를 os.pathsep (예: Unix의 경우 콜론, Windows의 경우 세미콜론)로 구분하여 지정합니다. 존재하지 않는 디렉토리는 무시됩니다. 일반적인 디렉토리 외에도, 개별 PYTHONPATH
항목은 소스 또는 컴파일된 형태의 순수한 Python 모듈을 포함하는 zip 파일을 참조할 수 있습니다. 그러나 확장 모듈은 zip 파일에서 가져올 수 없습니다. 기본 검색 경로는 설치에 따라 다르지만 일반적으로 prefix/lib/pythonversion
으로 시작합니다 (PYTHONHOME
참조). 항상 PYTHONPATH
에 추가됩니다. 인터페이스 옵션에서 설명한 대로 PYTHONPATH
앞에 검색 경로에 추가 디렉토리가 삽입됩니다. 검색 경로는 Python 프로그램 내부에서 sys.path
변수를 통해 조작할 수 있습니다.
PYTHONSAFEPATH
PYTHONSAFEPATH
가 비어 있지 않은 문자열로 설정된 경우, 잠재적으로 안전하지 않은 경로가 sys.path
에 추가되지 않습니다. 자세한 내용은 -P
옵션을 참조하십시오.
버전 3.11에서 추가되었습니다.
PYTHONPLATLIBDIR
PYTHONPLATLIBDIR
가 비어 있지 않은 문자열로 설정된 경우, sys.platlibdir
값을 재정의합니다.
버전 3.9에서 추가되었습니다.
PYTHONSTARTUP
이 변수가 읽기 가능한 파일의 이름인 경우, 해당 파일에 있는 Python 명령이 대화식 모드에서 첫 번째 프롬프트가 표시되기 전에 실행됩니다. 파일은 대화식 명령이 실행되는 동일한 네임스페이스에서 실행되므로 해당 파일에서 정의되거나 가져온 객체를 대화식 세션에서 변경 없이 사용할 수 있습니다. 또한 이 파일에서 sys.ps1과 sys.ps2 프롬프트 및 sys.interactivehook 후크를 변경할 수도 있습니다. 시작 시 filename
을 인수로 사용하여 감사 이벤트 cpython.run_startup
를 발생시킵니다.
PYTHONOPTIMIZE
이 변수가 비어 있지 않은 문자열로 설정된 경우, -O
옵션을 지정한 것과 동일합니다. 정수로 설정된 경우, -O
를 여러 번 지정한 것과 동일합니다.
PYTHONBREAKPOINT
이 변수가 설정된 경우, 점 표기법을 사용하여 호출 가능한 객체의 이름을 지정합니다. 호출 가능한 객체를 포함하는 모듈은 가져온 다음, sys.breakpointhook()
의 기본 구현에서 실행됩니다. 이 기본 구현은 built-in breakpoint()
에 의해 호출됩니다. 설정되지 않았거나 빈 문자열로 설정된 경우, 값 "pdb.set_trace"와 동일합니다. 이 변수를 문자열 "0"으로 설정하면 sys.breakpointhook()
의 기본 구현이 아무 작업도 하지 않고 즉시 반환하는 것과 동일합니다.
버전 3.7에서 추가되었습니다.
PYTHONDEBUG
이 변수가 비어 있지 않은 문자열로 설정된 경우, -d
옵션을 지정한 것과 동일합니다. 정수로 설정된 경우, -d
를 여러 번 지정한 것과 동일합니다. 이 환경 변수는 디버그 빌드의 Python에서만 사용할 수 있으며, 그렇지 않으면 무시됩니다.
PYTHONINSPECT
이 변수가 비어 있지 않은 문자열로 설정된 경우, -i
옵션을 지정한 것과 동일합니다. 이 변수는 os.environ
을 사용하여 Python 코드에서도 수정할 수 있으며, 프로그램 종료시 검사 모드를 강제로 설정하는 데 사용할 수 있습니다.
PYTHONUNBUFFERED
이 변수가 비어 있지 않은 문자열로 설정된 경우, -u
옵션을 지정한 것과 동일합니다.
PYTHONVERBOSE
이 변수가 비어 있지 않은 문자열로 설정된 경우, -v
옵션을 지정한 것과 동일합니다. 정수로 설정된 경우, -v
를 여러 번 지정한 것과 동일합니다.
PYTHONCASEOK
이 변수가 설정되면, Python은 import 문에서 대소문자를 무시합니다. 이 기능은 Windows와 macOS에서만 작동합니다.
PYTHONDONTWRITEBYTECODE
이 변수가 비어 있지 않은 문자열로 설정된 경우, 소스 모듈의 가져오기 시 .pyc 파일을 작성하지 않습니다. 이는 -B
옵션을 지정한 것과 동일합니다.
PYTHONPYCACHEPREFIX
이 변수가 설정된 경우, Python은 소스 트리 내의 pycache 디렉토리가 아닌 해당 경로의 미러 디렉토리 트리에 .pyc 파일을 작성합니다. 이는 -X pycache_prefix=PATH
옵션을 지정한 것과 동일합니다.
버전 3.8에서 추가되었습니다.
PYTHONHASHSEED
이 변수가 설정되지 않았거나 random으로 설정된 경우, str 및 bytes 객체의 해시에 무작위 값을 시드로 사용합니다. PYTHONHASHSEED가 정수 값으로 설정된 경우, 해시 무작위화 대상인 유형의 hash()를 생성하는 데 사용될 고정 시드로 사용됩니다. 이 변수의 목적은 해시를 반복 가능하게 만들기 위한 것입니다. 예를 들어 인터프리터 자체의 자체 테스트 또는 파이썬 프로세스 클러스터에서 해시 값을 공유할 수 있도록 하는 것입니다. 정수는 [0, 4294967295] 범위의 10진수 숫자여야 합니다. 값 0을 지정하면 해시 무작위화가 비활성화됩니다.
버전 3.2.3에서 추가되었습니다.
PYTHONINTMAXSTRDIGITS
이 변수가 정수로 설정된 경우, 해석기의 전역 정수 문자열 변환 길이 제한을 구성하는 데 사용됩니다.
버전 3.11에서 추가되었습니다.
PYTHONIOENCODING
이 변수가 인터프리터를 실행하기 전에 설정된 경우, stdin/stdout/stderr에 사용되는 인코딩을 지정합니다. 구문은 encodingname:errorhandler 형식입니다. encodingname 및 :errorhandler 부분은 선택적이며, str.encode()에서와 같은 의미를 가집니다. stderr의 경우 :errorhandler 부분은 무시됩니다. 핸들러는 항상 'backslashreplace'가 됩니다.
버전 3.4에서 변경되었습니다. encodingname 부분이 이제 선택적입니다.## Python 환경 변수
PYTHONNOUSERSITE
- 이 값이 설정되어 있으면, Python은 사용자 site-packages 디렉토리를 sys.path에 추가하지 않습니다.
PYTHONUSERBASE
- 사용자 base 디렉토리를 정의하며, 이를 사용하여 사용자 site-packages 디렉토리의 경로와 python -m pip install --user의 설치 경로를 계산합니다.
PYTHONEXECUTABLE
- 이 환경 변수가 설정되어 있으면, sys.argv[0]은 C 런타임을 통해 얻은 값 대신 이 값으로 설정됩니다. macOS에서만 작동합니다.
PYTHONWARNINGS
- 이는 -W 옵션과 동등합니다. 쉼표로 구분된 문자열로 설정되면, -W를 여러 번 지정한 것과 동일하며, 목록에서 나중에 나오는 필터가 먼저 나오는 것보다 우선합니다.
- 가장 간단한 설정은 특정 동작을 프로세스에서 발생하는 모든 경고에 조건을 지정하지 않고 적용합니다:
- PYTHONWARNINGS=default: 호출 위치 당 한 번 경고
- PYTHONWARNINGS=error: 예외로 변환
- PYTHONWARNINGS=always: 항상 경고
- PYTHONWARNINGS=module: 호출하는 모듈 당 한 번 경고
- PYTHONWARNINGS=once: Python 프로세스 당 한 번 경고
- PYTHONWARNINGS=ignore: 경고하지 않음
PYTHONFAULTHANDLER
- 이 환경 변수가 비어 있지 않은 문자열로 설정되어 있으면, 시작시 faulthandler.enable()이 호출됩니다. 이는 SIGSEGV, SIGFPE, SIGABRT, SIGBUS 및 SIGILL 신호에 대한 Python 추적 정보를 덤프하기 위한 핸들러를 설치합니다.
PYTHONTRACEMALLOC
- 이 환경 변수가 비어 있지 않은 문자열로 설정되어 있으면, tracemalloc 모듈을 사용하여 Python 메모리 할당을 추적합니다. 변수의 값은 추적의 traceback에 저장된 프레임의 최대 수입니다. 예를 들어, PYTHONTRACEMALLOC=1은 가장 최근의 프레임만 저장합니다.
PYTHONPROFILEIMPORTTIME
- 이 환경 변수가 비어 있지 않은 문자열로 설정되어 있으면, Python은 각 import에 걸리는 시간을 표시합니다.
PYTHONASYNCIODEBUG
- 이 환경 변수가 비어 있지 않은 문자열로 설정되어 있으면, asyncio 모듈의 디버그 모드를 활성화합니다.
PYTHONMALLOC
- Python 메모리 할당자 및/또는 디버그 훅을 설정합니다. Python에서 사용하는 메모리 할당자 패밀리를 설정합니다.
- default: 기본 메모리 할당자 사용
- malloc: 모든 도메인(PYMEM_DOMAIN_RAW, PYMEM_DOMAIN_MEM, PYMEM_DOMAIN_OBJ)에 대해 C 라이브러리의 malloc() 함수 사용
- pymalloc: PYMEM_DOMAIN_MEM 및 PYMEM_DOMAIN_OBJ 도메인에 대해 pymalloc 할당자 사용, PYMEM_DOMAIN_RAW 도메인에 대해 malloc() 함수 사용
- 디버그 훅 설치:
- debug: 기본 메모리 할당자 위에 디버그 훅 설치
- malloc_debug: malloc과 동일하지만 디버그 훅도 설치
- pymalloc_debug: pymalloc과 동일하지만 디버그 훅도 설치
PYTHONMALLOCSTATS
- 비어 있지 않은 문자열로 설정되면, Python은 새로운 pymalloc 객체 영역이 생성될 때마다 pymalloc 메모리 할당기의 통계를 인쇄하고 종료 시 인쇄합니다. 이 변수는 PYTHONMALLOC 환경 변수가 C 라이브러리의 malloc() 할당기를 강제로 사용하거나 pymalloc 지원 없이 Python이 구성된 경우 무시됩니다.
PYTHONLEGACYWINDOWSFSENCODING
- 비어 있지 않은 문자열로 설정되면, 기본 파일 시스템 인코딩과 오류 처리기 모드가 'mbcs' 및 'replace'로 이전 버전인 3.6 이전의 값으로 복원됩니다. 그렇지 않으면 새로운 기본값인 'utf-8'과 'surrogatepass'가 사용됩니다.
PYTHONLEGACYWINDOWSSTDIO
- 비어 있지 않은 문자열로 설정되면, 새로운 콘솔 리더와 작성기를 사용하지 않습니다. 이는 Unicode 문자를 utf-8 대신 활성 콘솔 코드 페이지에 따라 인코딩하는 것을 의미합니다. 표준 스트림이 콘솔 버퍼가 아닌 파일이나 파이프로 리디렉션된 경우 이 변수는 무시됩니다.
PYTHONCOERCECLOCALE
- 비어 있지 않은 문자열로 설정되면, Python은 C 언어 환경변수 LC_CTYPE을 쿼리하고, 그 값이 "UTF-8" 또는 "UTF8"로 시작하지 않으면, LC_CTYPE가 "C"로 설정되었거나 설정되지 않은 것으로 간주합니다. 이 경우, Python은 환경변수 LC_CTYPE을 "C.UTF-8"로 설정합니다.### 환경 변수
환경 변수를 사용하여 Python 인터프리터의 동작을 제어할 수 있습니다.
PYTHONCOERCECLOCALE
- 값이 0으로 설정되면, Python CLI 응용 프로그램은 ASCII 기반 C 및 POSIX 로케일을 더 능력있는 UTF-8 기반 대체로 변환하지 않도록 합니다.
- 이 변수가 설정되지 않았거나 0이 아닌 값으로 설정되지 않았으며, LC_CTYPE 범주에 대한 현재 로캘이 기본 C 로캘이거나 명시 적으로 ASCII 기반 POSIX 로캘이 아닌 경우, Python CLI는 인터프리터 런타임을 로드하기 전에 다음과 같은 로캘을 LC_CTYPE 범주에 대해 설정하려고 시도합니다.
- C.UTF-8
- C.utf8
- UTF-8
- 이러한 로캘 범주 중 하나를 설정하면, 현재 프로세스 환경에서도 LC_CTYPE 환경 변수가 해당 값으로 설정됩니다. 이는 인터프리터 자체뿐만 아니라 GNU readline 라이브러리와 같은 동일한 프로세스에서 실행되는 다른 로캘 인식 구성 요소 및 Python의 locale.getdefaultlocale()과 같은 환경을 쿼리하는 작업에서도 볼 수 있습니다.
- 이러한 로캘 (명시 적으로 또는 위의 암시 적 로캘 강제 변환을 통해)을 구성하는 것은 sys.stdin과 sys.stdout의 surrogateescape 오류 처리기를 자동으로 활성화합니다 (sys.stderr는 다른 로캘과 마찬가지로 backslashreplace를 사용합니다). 이 스트림 처리 동작은 PYTHONIOENCODING을 사용하여 재정의 할 수 있습니다.
- 디버깅 목적으로 PYTHONCOERCECLOCALE=warn을 설정하면 Python은 로캘 강제 변환을 활성화하거나 Python 런타임이 초기화 될 때 강제로 변환을 활성화하는 경우 stderr에 경고 메시지를 발생시킵니다.
- 로캘 강제 변환이 비활성화되었거나 적절한 대상 로캘이 찾을 수 없는 경우에도, 기존의 ASCII 기반 로캘이 아닌 로캘이 사용되는 경우 PYTHONUTF8는 여전히 기본적으로 활성화됩니다. 시스템 인터페이스에 UTF-8 대신 ASCII를 사용하려면 이러한 기능을 모두 비활성화해야 합니다.
PYTHONDEVMODE
- 이 환경 변수에 비어 있지 않은 문자열을 설정하면 Python 개발 모드가 활성화되어 기본적으로 활성화되지 않는 추가 런타임 검사가 도입됩니다.
- 이는 -X dev 옵션을 설정하는 것과 동일합니다.
PYTHONUTF8
- 값이 1로 설정되면, Python UTF-8 모드가 활성화됩니다.
- 값이 0으로 설정되면, Python UTF-8 모드가 비활성화됩니다.
- 다른 비어 있지 않은 문자열을 설정하면, 인터프리터 초기화 중에 오류가 발생합니다.
PYTHONWARNDEFAULTENCODING
- 이 환경 변수에 비어 있지 않은 문자열을 설정하면, 로캘별 기본 인코딩이 사용될 때 EncodingWarning을 발생시킵니다.
- 자세한 내용은 Opt-in EncodingWarning을 참조하십시오.
PYTHONNODEBUGRANGES
- 이 변수가 설정되면, 코드 객체의 각 명령문에 대한 추가 위치 정보 (끝 행, 시작 열 오프셋 및 끝 열 오프셋)를 매핑하는 테이블을 포함하지 않습니다. 이는 더 작은 코드 객체 및 pyc 파일을 원할 때 유용하며, 인터프리터가 추적을 표시할 때 추가 시각적 위치 표시를 억제하는 데도 사용할 수 있습니다.
PYTHONPERFSUPPORT
- 이 변수가 0이 아닌 값을 가지면, Linux perf 프로파일러의 지원을 활성화하여 Python 호출을 감지할 수 있습니다.
- 값이 0으로 설정되면, Linux perf 프로파일러 지원이 비활성화됩니다.
- Linux perf 프로파일러에 대한 Python 지원 및 -X perf 커맨드 라인 옵션을 참조하십시오.
PYTHONDUMPREFS
- 설정되면, Python은 인터프리터를 종료한 후에도 여전히 살아 있는 객체와 참조 카운트를 덤프합니다.
- --with-trace-refs 빌드 옵션으로 Python을 구성해야 합니다.
PYTHONDUMPREFSFILE=FILENAME
- 설정되면, Python은 인터프리터를 종료한 후에도 여전히 살아 있는 객체와 참조 카운트를 FILENAME이라는 파일에 덤프합니다.
- --with-trace-refs 빌드 옵션으로 Python을 구성해야 합니다.
'Python' 카테고리의 다른 글
[pip] WARNING: Skipping due to invalid metadata entry 'name' (0) | 2023.12.30 |
---|---|
[Python] Command Line Flags (0) | 2023.12.26 |
[pipx] python 전역 패키지관리 pipx (0) | 2023.11.29 |
[mandelbrot set] 망델브로 집합 (0) | 2023.11.19 |
[Version] 3.12 rc (Release Candidates) (2) - kwargs, override (0) | 2023.10.26 |