2014-01-30 2 views
1

the python docs의 C++ 프로그램에서 파이썬 코드를 호출하는 방법을 배우고 있습니다.패키지를 가져와야하는 python 파일을 호출하는 방법은 무엇입니까?

multiply 예를 호출 할 때 모든 것이 잘 작동합니다. 나는 도서관을 가져 파이썬 소스 코드 한 줄을 추가하면 지금, 나는이 시스템 라이브러리를 가져 오는 경우

from openpyxl import load_workbook 

내가 파이썬

생각
ImportError: No module named openpyxl 

에서 오류가 발생, openpyxl 말할 수, 어떤 문제도 발생하지 않지만 datetime을 가져 오려고하면 오류가 발생합니다.

파이썬 콘솔에서 파일을 가져 오면 오류가 없습니다. openpyxl 라이브러리가 시스템에 설치되어 있습니다.

내 질문은 : 어떻게 패키지를 가져올 필요가 파이썬 소스 코드를 가져올 수 있습니까?

편집 : 좋아, 내가 뭔가를 언급하는 것을 잊어 버렸고, 나는 너희들에게 완전히 정직하지 못했다. 미안하다.

예제를 실행하려고하면 파이썬이 내 multiply.py 파일을 찾을 수 없으며 라인 PyImport_Import은 항상 null을 반환합니다.

내 해결책은 내 파이썬 소스가 PySys_SetPath이라는 것을 알고있는 경로를 추가하는 것이 었습니다. 문제는 방금이 함수가 새로운 디렉토리를 추가하지 않는다는 것을 깨달았습니다. PYTHONPATH을 덮어 씁니다. 이제 파이썬은 multiply.py을 찾을 수 있습니다.

물론 그 줄을 삭제했지만 다른 질문이 있습니다. 파일이 C++ 컴파일 된 프로그램의 같은 디렉터리에있는 경우 왜 파이썬에서 내 원본을 찾을 수 없습니까? 첫 번째 목록 빈 문자열 ''의 시작 부분에 있었다 :

나는 경로 내 임베디드 파이썬에서 보여에서 내 파이썬 콘솔에서 sys.path 조금 달랐다 내 것을 깨달았다. 나는 파이썬 전문가가 아니지만, 내 경로에 해당 라인을 추가 할 때 multiply.py을 가져올 수 있었기 때문에 실행 파일에 상대적으로 위치한 모듈을 가져올 수없는 이유가이 빈 경로가 누락 된 것 같습니다. 그러나 그것은 여전히 ​​그것이 무엇을 의미하는지 모른다.

내 파일을 찾기위한 경로를 추가하는 아이디어를 제공하는 @ paul-evans에게 감사드립니다.

+0

시스템에 여러 버전의 Python이 설치되어 있습니까? – SethMMorton

+0

파이썬 2.7, 파이썬 3, 파이썬 3.3이 있습니다. 'PyRun_SimpleString ("import sys \ nprint (sys.version)");' – camolin3

+0

'PYTHONPATH' 변수는'site.py'에서만 읽혀지기 때문에 2.7 버전을 사용하고 있습니다. if 어떤 이유로 당신의 통역관이이 파일을 읽지 않고'PYTHONPATH'가 무시 될 것입니다. – SethMMorton

답변

1

이것은 PYTHONPATH을위한 것입니다. 목록 모듈 디렉토리를 포함하는 환경 변수 또는 코드 자체에 다음과 같이 설정할 수 있습니다.

import sys 
sys.path.append("path/to/openpyxl/module") 
+0

좋아요, 실제로'openpyxl'을 찾는데 효과적 이었지만 여전히'datetime' 패키지를로드하는 데 실패했습니다 ... 라이브러리에 필요한 모든 디렉토리를 추가해야합니까? – camolin3

+0

'datetime' 모듈을 찾지 못하는 것은 설치 문제와 비슷하게 보이지만 PYTHONPATH에 추가하면 임시 수정으로 작동합니다. 설치 이후에 파이썬 디렉토리를 재구성 했습니까? 파이썬을 다시 설치해보십시오. –

+0

우분투 13.10과 함께 설치된 표준 파이썬 2.7.5를 사용하고 있습니다. 그리고 위치를 찾는 문제는 파이썬 콘솔에서 발생하지 않습니다. 임시 픽스가 될 수 있지만 더 나은 프로그램을 찾아야한다고 생각합니다.이 프로그램은 Windows 컴퓨터에서 작동하도록 만들어졌습니다 :/ – camolin3