나는 이것을 연구하는 데 시간을 보냈다. 나는이 문제를 내 머리 속에서 해결할 수 없다.sys.path 및 os.path 문제로 가져 오는 Python 모듈
은 내가 시도하고 모듈에 다른 디렉토리에있는라고 my_module.py 먹으 렴을 가져 main.py에서
이 집/프로그램을 말할 자신의 디렉토리 홈/프로그램/코어/main.py에서 프로그램을 실행 /modules/my_module.py
main.py에서 sys.path에이 코드를 추가하여 모든 사람의 컴퓨터에서 프로그램을 실행할 수 있습니다 (잘하면).
import os.path
import sys
# This should give the path to home/program
sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__), '..'))
# Which it does when checking with
print os.path.join(os.path.abspath(os.path.dirname(__file__), '..')
# So now sys.path knows the location of where modules directory is, it should work right?
import modules.my_module # <----RAISES ImportError WHY?
그러나 단순히 할 경우 : 그것은 모두 잘 작동
sys.path.append('home/program/modules')
import my_module
. 그러나 이것은 프로그램이 가정/프로그램 아래 있어야한다는 사실에 달려 있기 때문에 이상적이지 않습니다. modules
그것은 (당신은 그들없이 import
와 이송 디렉토리가 __init__.py
표시되지 수) 어떤 __init__.py
파일을 포함하지 않는 아마 때문에, 유효한 파이썬 패키지 아니므로의
그러나 내 문제는 왜 무의미한 __init__.py 파일을 사용해야합니까 ?? 방금 my_module.py가있는 디렉터리를 깨끗하게 유지하기 위해 my_module.py가 실제로 해당 디렉터리의 유일한 파일이됩니다. 'sys.path.append ('home/programs/modules')'는'__init __. py' 파일없이 작동합니다. –
그것이 파이썬이 작동하는 이유입니다. '__init __. py '로 표시하지 않고'import'를 사용하여 디렉토리를 트래버스 할 수는 없습니다. 두 번째 해결책은 여전히 있습니다 : "모듈"까지 경로 추가. –
ok 그러나 모듈을 가져올 수있는 코드를 어떻게 구현합니까? 모듈 디렉토리에 경로를 추가하여 __init__.py –