다음과 같은 폴더 구조가 있습니다.
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 디렉토리를 찾는 대신이 폴더에서 응용 프로그램 폴더를 찾으십시오.