[python] 다른 폴더에서 파일 가져 오기

다음과 같은 폴더 구조가 있습니다.

application/app/folder/file.py

file.py의 일부 함수를 다른 파이썬 파일에 가져오고 싶습니다 .

application/app2/some_folder/some_file.py

난 노력 했어

from application.app.folder.file import func_name

그리고 다른 여러 가지 시도가 있었지만 지금까지 제대로 가져올 수 없었습니다. 어떻게해야합니까?



답변

기본적으로 할 수 없습니다. 파일을 가져올 때 Python은 현재 디렉토리, 진입 점 스크립트가 실행되는 sys.path디렉토리 및 패키지 설치 디렉토리와 같은 위치를 포함합니다 (실제로는 이것보다 약간 복잡하지만 대부분의 경우를 다루고 있습니다) .

그러나 런타임에 Python 경로에 추가 할 수 있습니다.

# some_file.py
import sys
# insert at 1, 0 is the script path (or '' in REPL)
sys.path.insert(1, '/path/to/application/app/folder')

import file


답변

아무 문제가 없습니다 :

from application.app.folder.file import func_name

folder포함하고 있는지 확인 __init__.py하면 패키지로 포함될 수 있습니다. 다른 답변이 왜 이야기하는지 잘 모르겠습니다 PYTHONPATH.


답변

질문과 같이 모듈이 병렬 위치에있는 경우 :

application/app2/some_folder/some_file.py
application/app2/another_folder/another_file.py

이 속기는 하나의 모듈을 다른 모듈에서 볼 수있게합니다.

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


답변

name-file.py에서 첫 번째 sys 가져 오기

 import sys

두 번째 로 name-file.py에 폴더 경로를 추가하십시오.

sys.path.insert(0, '/the/folder/path/name-package/')

셋째 하위 디렉토리에 __ init __.py라는 빈 파일을 만듭니다 (파이썬에게 패키지임을 알려줍니다)

  • name-file.py
  • 이름 패키지
    • __ init __.py
    • name-module.py

네 번째 는 name-file.py의 폴더 안에 모듈을 가져옵니다.

from name-package import name-module


답변

필자 는 설명서에 설명 된대로 환경 변수PYTHONPATH 를 사용 하는 것이 임시 방법이라고 생각합니다 : Python2 , Python3

# Linux & OSX
export PYTHONPATH=$HOME/dirWithScripts/:$PYTHONPATH

# Windows
set PYTHONPATH=C:\path\to\dirWithScripts\;%PYTHONPATH%


답변

여기에 대한 답변이 명확하지 않습니다 .Python 3.6에서 테스트되었습니다.

이 폴더 구조로 :

main.py
|
---- myfolder/myfile.py

myfile.py내용이있는 곳 :

def myfunc():
    print('hello')

수입 명세서 main.py는 다음과 같습니다.

from myfolder.myfile import myfunc
myfunc()

그러면 hello 가 인쇄 됩니다.


답변

문제는 파이썬이 파이썬 디렉토리 에서이 파일을 찾고 찾지 못한다는 것입니다. 파이썬이 아닌 디렉토리에 대해 이야기하도록 지정해야합니다.

이렇게하려면 다음을 변경하십시오.

from application.app.folder.file import func_name

이에:

from .application.app.folder.file import func_name

점을 추가하면 Python 디렉토리를 찾는 대신이 폴더에서 응용 프로그램 폴더를 찾으십시오.