파이썬에서 자기란 무엇인가: 실제 사례
파이썬에서 자기란 무엇인가: 실제 사례
상위 디렉토리에서 모듈을 가져오는 데 어려움을 겪으면서 Python 파일에 무릎을 꿇은 적이 있습니까? 그렇다면 좋은 회사에 있는 것입니다. Python의 가져오기 시스템은 때때로 구불구불한 미로처럼 느껴질 수 있지만 걱정하지 마세요. 탐색을 도와드리겠습니다!
Python의 상위 디렉토리에서 가져오려면 sys 모듈을 사용할 수 있습니다. 필요한 디렉토리를 sys.path 목록에 삽입하면 원하는 모듈의 위치를 인터프리터에 제공할 수 있습니다. sys.path를 수정한 후 표준 import 문을 사용하여 대상 모듈을 가져올 수 있습니다.
이 기사에서는 Python의 상위 디렉토리에서 가져오는 방법을 살펴보겠습니다. 또한 디렉토리의 기본 구조를 더 잘 이해하는 데 도움이 되는 가져오기의 특정 사용 사례를 살펴보겠습니다.
그것에 들어가자!
목차
Python에서 가져오는 방법
오늘의 주제인 Python에서 가져오기로 바로 넘어갈 것입니다. 종종 import 또는 from ? 으로 시작하는 Python 스크립트의 시작 부분에 있는 간단한 코드 줄입니다. Python의 광범위한 라이브러리 및 모듈의 기능을 활용할 수 있는 티켓입니다.
이 섹션에서는 Python의 상위 디렉터리에서 가져오기 위한 코드를 살펴보겠습니다. 또한 상위 디렉토리에서 모듈을 가져올 때 발생할 수 있는 잠재적인 오류도 살펴보겠습니다.
Python 가져오기 시스템이란 무엇입니까?
Python 가져오기 시스템을 사용하면 효율적인 코드 재사용 및 구성이 가능합니다. 복잡한 프로젝트를 쉽게 관리할 수 있습니다.
Python에서 모듈이나 패키지를 가져오려면 import 문을 사용할 수 있습니다. 모듈은 Python 파일 모음이 있는 디렉토리인 패키지로 배포됩니다.
상위 디렉토리에서 모듈을 가져오려면 sys.path 모듈을 사용하여 Python의 경로에 상위 디렉토리를 추가할 수 있습니다. 상위 디렉토리를 추가한 후 import 문을 사용하여 모듈을 가져올 수 있습니다 .
상위 디렉토리에서 가져오기 데모
상위 디렉토리에서 가져오기에 대한 명확한 데모를 제공하기 위해 전체 프로세스를 이해하는 데 도움이 되는 일련의 단계를 살펴보겠습니다.
1. 필요한 디렉토리 및 파일 생성
먼저 파일 탐색기를 열고 원하는 로컬 드라이브로 이동합니다. 로컬 E 드라이브를 사용하고 있으므로 my_project 라는 새 디렉토리를 생성합니다 .
my_project 안에 module_dir 이라는 또 다른 디렉토리를 만듭니다 .
따라서 이제 다음이 있어야 합니다.
E:
|-- /my_project
|-- /module_dir
2. 파이썬 파일 추가하기
다음으로 my_project 디렉터리 에 main.py 라는 새 .py 파일을 만듭니다 .
그런 다음 module_dir 에 my_module.py 라는 또 다른 Python 파일을 만듭니다 .
이제 구조가 다음과 같아야 합니다.
E:
|-- /my_project
|-- main.py
|-- /module_dir
|-- my_module.py
Visual Studio Code를 사용하는 경우 디렉터리 구조는 다음과 같아야 합니다.
3. Python 파일 편집
my_module.py를 열고 다음 코드를 추가합니다.
def my_function():
print("Hello from my_module!")
그런 다음 파일을 저장하고 닫습니다.
이제 main.py를 열고 다음 코드를 추가합니다.
import sys
import os
# Get the parent directory
parent_dir = os.path.dirname(os.path.realpath(__file__))
# Add the parent directory to sys.path
sys.path.append(parent_dir)
# Import the module from the parent directory
from module_dir import my_module
# Use a function from my_module
my_module.my_function()
이 스크립트에서는 먼저 실행 중인 스크립트에서 한 수준 위의 디렉터리(부모 디렉터리)의 위치를 파악합니다. 그런 다음 Python이 모듈을 가져와야 할 때 이 부모 폴더도 살펴보라고 지시합니다.
그런 다음 이 부모 디렉터리에 있는 module_dir 이라는 디렉터리 안에 있는 my_module 이라는 모듈을 가져옵니다. 마지막으로 my_module 에서 my_function 이라는 함수를 호출합니다 .
위의 코드를 추가한 후 파일을 저장하고 닫습니다.
4. 코드 실행
이 코드를 실행하려면 원하는 코드 편집기의 터미널을 열고 main.py 파일을 실행합니다. Visual Studio Code를 사용하는 경우 출력은 다음과 같아야 합니다.
main.py 는 위의 이미지와 같이 my_module.py 에서 함수를 가져옵니다 .
이 예제는 파일 시스템과 상위 디렉토리에서 가져오기가 Python에서 작동하는 방식을 자세히 보여줍니다.
Python에서 ImportError 및 ModuleNotFoundError를 처리하는 방법
파이썬은 가져오려는 모듈이 가져오기 프로세스 중에 발견되지 않으면 ImportError 예외를 발생시킵니다.
ImportError 는 ModuleNotFoundError 예외 의 하위 클래스입니다 . 가져온 모듈이 존재하지 않거나 로드할 수 없을 때 발생합니다.
다음은 이러한 상황이 발생할 수 있는 시나리오의 예입니다.
모듈 또는 패키지가 sys.path 에 없습니다 .
모듈 또는 패키지 이름의 철자가 잘못되었거나 존재하지 않습니다.
모듈의 코드에 문제가 있어 제대로 가져올 수 없습니다.
이러한 오류가 발생하면 다음 해결 방법을 사용할 수 있습니다.
모듈 또는 패키지의 철자와 존재 여부를 다시 확인합니다.
append() 또는 insert() 를 사용하여 필요한 디렉토리를 sys.path 에 추가합니다 .
가져오기를 방해할 수 있는 모듈 코드의 모든 문제를 수정합니다.
Python에서 오류를 처리하는 방법에 대해 자세히 알아보려면 다음 비디오를 확인하십시오.
Python에서 가져오기가 작동하는 방식을 이해한 후에는 Python의 디렉터리 구조에 익숙해지는 것도 중요합니다.
가져오기는 디렉터리 구조에 대한 이해가 필요하므로 디렉터리 구조와 가져오기는 서로 밀접한 관계가 있으므로 다음 섹션에서 살펴보겠습니다.
파이썬 디렉토리 구조
Python 디렉토리 구조를 이해하는 것은 스크립트를 넣을 위치나 방금 설치한 라이브러리를 찾을 위치를 아는 것 이상입니다.
깨끗하고 잘 정돈된 책상을 갖는 것과 같습니다. 모든 것이 어디에 있는지 정확히 알 수 있고 생산성이 급증하므로 이 섹션의 기본 사항을 살펴보겠습니다.
패키지 구조
Python 프로젝트의 디렉토리 구조는 올바른 구성에 필수적입니다. 패키지를 올바르게 구성하면 이름 충돌 가능성을 최소화하는 데 도움이 됩니다. 또한 파일 시스템을 쉽게 탐색할 수 있습니다.
다음은 일반적인 Python 프로젝트 디렉터리 구조입니다.
project/
?
??? package1/
? ??? __init__.py
? ??? module1.py
? ??? module2.py
?
??? package2/
? ??? __init__.py
? ??? module3.py
? ??? module4.py
?
??? main.py
위의 예에서 project는 두 개의 하위 패키지인 package1 및 package2를 포함하는 루트 디렉토리입니다 . 각 패키지에는 .py 파일과 고유한 init.py 파일이 있습니다 .
init.py 파일이란?
init.py 파일은 패키지를 가져올 때 패키지의 동작을 정의하는 데 중요합니다. 이러한 파일은 상위 패키지를 가져올 때 실행됩니다.
init.py 파일은 비어 있거나 초기화 코드를 포함할 수 있습니다 . 또한 폴더가 패키지로 취급되어야 함을 Python에 나타냅니다.
부모 디렉터리에서 모듈을 가져오려면 sys.path 메서드 를 사용할 수 있습니다 . sys.path 에 상위 디렉토리 경로를 추가해야 합니다 .
이를 시연하기 위해 이전 예제를 빌드해 보겠습니다. 우리는 다음과 같은 디렉토리 구조를 가졌습니다.
E:
|-- /my_project
|-- main.py
|-- /module_dir
|-- my_module.py
이제 init.py 파일을 my_module 디렉토리 에 추가해 봅시다 . 지금은 이 파일을 비워둘 수 있습니다. 그 존재는 파이썬에게 이 디렉토리가 패키지로 취급되어야 함을 나타냅니다.
이제 디렉토리 구조는 다음과 같아야 합니다.
init.py 파일을 추가한 후에 는 main.py 파일 을 변경하여 module_dir 폴더를 패키지로 취급하도록 지시 해야 합니다. 이제 main.py 파일 에 다음 코드가 있어야 합니다.
import sys
import os
# Get the parent directory
parent_dir = os.path.dirname(os.path.realpath(__file__))
# Add the parent directory to sys.path
sys.path.append(parent_dir)
# Import my_module from the package module_dir
import module_dir
# Call my_function from my_module
my_module.my_function()
이 예제에서 main.py는 module_dir 패키지를 가져온 다음 해당 패키지 내의 my_module에서 my_function() 함수를 호출합니다.
my_function 호출의 변경 사항에 유의하십시오 . 이제 module_dir을 패키지로 취급하기 때문에 패키지 내의 모듈에서 함수를 호출할 때 패키지 이름을 포함해야 합니다.
출력은 이전 출력과 유사합니다. 유일한 변경 사항은 module_dir을 init.py 파일이 포함된 패키지로 취급하는 것이었습니다 .
파이썬 검색 경로
파이썬이 가져오려는 모듈을 어디에서 찾을 수 있는지 궁금한 적이 있습니까? 아니면 성가신 'ModuleNotFoundError'가 발생했는데 이유를 알 수 없습니까?
이 섹션에서는 이러한 미스터리를 정면으로 다루고 Python 검색 경로의 개념을 탐구할 것입니다.
sys.path 라고도 하는 Python 검색 경로는 필요한 모든 모듈을 찾기 위한 Python의 작은 로드맵입니다. 부지런한 스카우트처럼 Python은 import 문을 사용할 때마다 이 경로를 사용하여 컴퓨터에서 모듈을 검색합니다.
Understanding how it works can save you from headaches and help you troubleshoot when things go awry, so let’s go over some basics!
1. What is the sys.path List in Python?
The sys.path list is a crucial component when importing modules in a directory. It’s a list of strings that represents the module search path.
Each string in the list is a directory location where Python looks for modules (*.py files) or packages (folders containing init.py files).
The following example shows you how to view your current sys.path list:
import sys
for path in sys.path:
print(path)
After running the above code, you’ll see an output like the following:
You can also add new directories to the sys.path list so that Python finds your custom modules.
For instance:
import sys
sys.path.append('/path/to/new/module/directory')
2. What are PythonPath Environment Variables?
Another way you can manage the module search path is by using the PYTHONPATH environment variable.
PYTHON PATH is a string containing a list of directories that is appended to the default sys.path list. This means you can add directories to PYTHONPATH. This allows Python to search for modules in those directories when importing.
Setting the PYTHONPATH environment variable depends on your operating system:
Unix-based systems (Linux, macOS): You can use the export command in your terminal or add the following line to your shell configuration file (.bashrc, .zshrc or similar):
export PYTHONPATH="/path/to/module/directory1:/path/to/module/directory2"
Windows OS: Go to System Properties > Environment Variables, and under User variables, click New to create a new variable with the name: “PYTHONPATH” and the value as a list of directory paths separated by a semi-colon (;).
C:pathtomoduledirectory1;C:pathtomoduledirectory2
Once the path variable is set, you can run your Python script. It will search for imported modules in those directories as well as the default ones in sys.path.
When organizing your code into files and folders, you’ll frequently come across relative imports and adjusting sys.path.
In the next section, we’ll explore both and see how they fit into the framework for Python imports.
Parent Directory Imports
You can organize code into different folders and files to improve both readability and maintainability. However, importing modules from parent directories can be a bit tricky.
In this section, we’ll discuss two approaches to achieve this:
Relative Imports
Adjusting sys.path
1. Relative Imports
Relative imports allow you to import modules based on their relative position in the directory hierarchy.
You can use the dot (.) notation to refer to the current directory or double dot (..) notation to refer to the parent directory.
Suppose you have a directory structure like the following:
parent_directory/
?
??? module_a.py
?
??? sibling_directory/
??? module_b.py
Inside module_b.py, you can use relative imports to access module_a.py:
from .. import module_a
The double dot refers to the parent directory. It is important to note that relative imports only work if the parent directory is a package (has an init.py file).
2. Adjusting sys.path
You can also import modules from a parent directory by modifying the sys.path.
import 문 전에 부모 디렉터리 경로를 sys.path 에 추가할 수 있습니다 . 먼저 sys 모듈을 가져와야 합니다 . 그런 다음 os 모듈을 사용하여 상위 디렉토리 경로를 가져옵니다.
다음과 같은 디렉토리 구조가 있다고 가정합니다.
project_root/
?
??? parent_directory/
? ??? module_a.py
?
??? current_directory/
??? module_b.py
module_b.py 에서 다음과 같이 상위 디렉토리 경로를 sys.path 에 추가할 수 있습니다.
import os
import sys
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(parent_dir)
import module_a
이제 Python은 module_b.py 에서 모듈 을 가져올 때 상위 디렉토리에서 module_a.py 를 찾습니다 .
상대 가져오기 접근 방식 또는 sys.path 접근 방식을 사용하여 상위 디렉터리에서 모듈을 가져올 수 있습니다.
모듈 및 패키지 작업 방법
Python에서 모듈과 패키지는 코드를 구성하고 재사용하는 방법입니다. 이를 사용하여 복잡한 프로젝트를 관리 가능한 부분으로 나눌 수 있습니다.
이 섹션에서는 Python 에서 모듈 및 패키지로 작업하는 방법에 대해 설명합니다 . 다음과 같은 주요 개념도 포함할 예정입니다.
네임스페이스
변수 및 정의
수입 명세서
1. 네임스페이스란?
Python의 네임스페이스는 변수, 함수 및 클래스의 이름이 서로 다른 모듈 간에 충돌하지 않도록 하는 방법입니다.
Python에는 다음과 같은 다양한 수준의 네임스페이스가 있습니다.
전역 네임스페이스: 전체 모듈의 네임스페이스를 나타냅니다.
로컬 네임스페이스: 함수 또는 클래스 내의 네임스페이스를 나타냅니다.
namespace[name] 표기법을 사용하여 특정 네임스페이스에서 이름을 얻을 수 있습니다 .
2. 변수 및 정의란 무엇입니까?
Python 스크립트에서 변수, 함수 및 클래스를 정의할 수 있습니다. 이러한 정의는 스크립트의 네임스페이스에 저장됩니다.
스크립트를 패키지로 가져오면 프로젝트의 다른 부분에서 해당 정의에 액세스하고 재사용할 수 있습니다.
다음은 동일한 네임스페이스에서 변수와 함수를 정의하는 방법의 예입니다.
# my_variable.py
my_variable = 5
def my_function(x):
return x + my_variable
이 모듈에는 my_variable 변수 와 my_function 함수가 있습니다 .
이 코드를 실행하려면 my_variable.py 라는 새 파일을 만들고 아래와 같이 코드를 넣을 수 있습니다.
이제 이 파일을 가져와서 아래와 같이 다른 스크립트에서 사용할 수 있습니다.
main.py 파일을 실행하면 다음과 유사한 출력이 표시됩니다.
3. 수입 명세서란 무엇입니까?
import 문을 사용하여 Python에서 파일, 모듈 또는 패키지를 가져올 수 있습니다.
몇 가지 일반적인 가져오기 방법은 다음과 같습니다.
import module_name : 이 메소드는 module_name.definition_name 표기법 으로 모듈의 모든 정의에 액세스할 수 있도록 모듈을 가져옵니다 .
import mymodule
result = mymodule.my_function(3)
from module_name import some_definition : 이 방법은 모듈에서 특정 정의를 가져오므로 모듈 접두사 없이 직접 사용할 수 있습니다.
from mymodule import my_function
result = my_function(3)
from module_name import * : 이 방법은 모듈에서 모든 정의를 가져오지만 이름 충돌이 발생할 수 있으므로 권장되지 않습니다.
마지막 생각들
Python의 상위 디렉토리에서 가져오는 방법을 이해하는 것은 조직화된 코드베이스를 유지 관리하는 데 중요합니다.
이 지식을 통해 보다 모듈화된 방식으로 프로젝트를 설계할 수 있습니다. 또한 코드의 재사용 가능성을 높입니다. 코드를 별도의 모듈과 패키지로 구조화하면 코드 반복을 피하고 유지 관리 및 업데이트가 더 쉬워집니다.
import 및 from 문을 사용하는 기술은 기능이 여러 디렉터리에 걸쳐 분할되는 대규모 프로젝트에서 작업할 때 가장 유용합니다.
모듈을 가져오기 위해 Python의 경로를 올바르게 조정하는 방법을 알면 다른 디렉터리에서 작업하는 동안 한 디렉터리에 정의된 기능에 액세스할 수 있습니다.
Python 또는 모든 프로그래밍 언어를 마스터하는 열쇠는 일관된 연습과 만족할 줄 모르는 호기심에 있음을 기억하십시오. 그러니 계속 탐색하고, 계속 실험하고, 계속 도전하세요.
이 빠른 가이드를 통해 Python이 던지는 모든 가져오기 퍼즐을 처리할 수 있는 준비가 되어 있어야 합니다. 그러나 여기서 멈추지 마십시오. 발견되기를 기다리는 Python 기술과 트릭의 전체 세계가 있습니다!
파이썬에서 자기란 무엇인가: 실제 사례
R의 .rds 파일에서 개체를 저장하고 로드하는 방법을 배웁니다. 이 블로그에서는 R에서 LuckyTemplates로 개체를 가져오는 방법도 다룹니다.
이 DAX 코딩 언어 자습서에서는 GENERATE 함수를 사용하는 방법과 측정값 제목을 동적으로 변경하는 방법을 알아봅니다.
이 자습서에서는 다중 스레드 동적 시각적 개체 기술을 사용하여 보고서의 동적 데이터 시각화에서 통찰력을 만드는 방법을 다룹니다.
이 기사에서는 필터 컨텍스트를 살펴보겠습니다. 필터 컨텍스트는 모든 LuckyTemplates 사용자가 처음에 배워야 하는 주요 주제 중 하나입니다.
LuckyTemplates Apps 온라인 서비스가 다양한 소스에서 생성된 다양한 보고서 및 인사이트를 관리하는 데 어떻게 도움이 되는지 보여주고 싶습니다.
LuckyTemplates에서 측정 분기 및 DAX 수식 결합과 같은 기술을 사용하여 수익 마진 변경을 해결하는 방법을 알아봅니다.
이 자습서에서는 데이터 캐시의 구체화 아이디어와 결과 제공 시 DAX 성능에 미치는 영향에 대해 설명합니다.
지금까지 Excel을 계속 사용하고 있다면 지금이 비즈니스 보고 요구 사항에 LuckyTemplates를 사용하기 시작하는 가장 좋은 시기입니다.
LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것