2012-11-25 6 views
2

을 생산하고 있습니다. GE_Test.py와 GE_Test_fail.py는 가져 오기 부분을 제외하고는 완전히 동일한 코드를 포함합니다. 내가 얻을이의 내가 같은 디렉토리 구조를 가지고 있다고 가정 해 봅시다 예기치 않은 동작을

from thesis_program.utils import execute 
from thesis_program.classes import Grammatical_Evolution 

그리고 예기치 않게 : GE_Test_fail.py에, I 클래스와 유틸이 방법을 가져

from utils import execute 
from classes import Grammatical_Evolution 

동안 : GE_Test.py에서 나는 클래스와 유틸이 방법을 가져 다른 결과. 여기에 문제가 있습니까? 모듈을 올바르게 가져 옵니까? 내가

이 또한 내가 utils.py에 몇 가지 일반적인 기능을 가지고 있기 때문에 어떻게 든 utils.py에 의존한다 classes.py 어떤 씨앗과 난수를 생성하기 때문에

나는, 결과는 동일해야 보장 할 수 있습니다. 나는 utils가 또한 시스템에 의해 사용되는 이름이라고 생각한다. 따라서 두 번째 경우 (GE_Test_fail.py) 시스템 utils가 내 utils.py를 무시합니다. 그러나 그것은 나를 위해 이해가되지 않는 것 같습니다. 스크린 샷도 https://github.com/goFrendiAsgard/feature-extractor

을 그리고 : (잘못 무엇을 발견하는 데 도움이 경우)

classes.py 및 utils.py의 전체 소스 코드는 여기에서 확인할 수 있습니다 https://picasaweb.google.com/111207164087437537257/November25201204?authuser=0&authkey=Gv1sRgCOKxot2a2fTtlAE&feat=directlink

+0

어떤 종류의 오류가 발생합니까 ??? 나는 그것을 내 시스템에서 돌렸고 모두 ('GA_test.py','GE_Test.py','GP_Test.py') 최종적으로 훌륭한 매트 - 플롯 플로팅을 보여주고 있습니다. – namit

+0

@NamitKewat : 디렉토리 외부에서 GE_Test.py를 복사하여 실행하십시오. 예기치 않게 다른 결과가 나옵니다. 하나의 내부 디렉토리는 올바르게 표시되지만 디렉토리 외부의 것은 잘못되어 세대 간 개선이없는 것으로 보입니다. 질문을 편집하고 2 개의 스크린 샷을 첨부했습니다. – goFrendiAsgard

+0

내가 무엇을 얻고 있는지 출력을보십시오. 그들은 모두 정확합니다 ??? .http : //dl.dropbox.com/u/2409700/geneting_tests.zip – namit

답변

2

에 아래에 언급 된 줄을 추가 논문 폴더 밖에있는 테스트 파일. 다른

import syssys.path.insert(0,"/path to your thesis folder/thesis_program")


및 유지 모든; 예 : GE_Test.py ..

import sys 
sys.path.insert(0,"/path to your thesis folder/thesis_program") 
from utils import execute 
from classes import Grammatical_Evolution 

편집 :

또는 만들기 위해 이것을 사용이 더 역동적
(주의 : 당신이 당신의 test_files을 찾을 수 있음을 항상 가능하지 않을 수 있기 때문에 os.path.abspath('./thesis_program')에 의해 경로를 찾을려고하지 않는다 와 thesis_folder이 같은 디렉토리에 있다면, 위와 같이 코드에서 영구적으로 고칠 수 있다면 시스템의 아무 곳에서나 자유롭게 사용할 수 있습니다.

import os, sys 
lib_path = os.path.abspath('./thesis_program') 
sys.path.insert(0,lib_path) 
+0

고맙습니다. 그러나 나는 아직도 여기서 무엇이 잘못되었는지 알 수 없다. 나는 또한 당신의 질문을 수정했다. (대안을 추가하여) 더 동적으로 만든다. – goFrendiAsgard

+0

파이썬 문서에 따르면'sys.path'는'모듈 검색 경로를 지정하는 문자열 목록이다 .' 그래서'print sys .path'를 코드에서 사용할 수있는 추가 ('sys.path.insert (0, lib_path)') 직전과 직후에 파이썬이'thesis_program' 폴더를 그의 검색 위치에 추가 한 것을 볼 수 있습니다 모듈을 찾을 수있는 곳 http://docs.python.org/2/library/sys.html#sys.path – namit

+0

이전에 sys.path.append (lib_path)를 사용하려고 시도했지만 시도하지 않았습니다. 그러나 sys.path.insert (0, lib_path) 솔루션은 완벽하게 작동합니다. sys.path에 대해 더 많이 읽어야 할 필요가 있다고 생각합니다. 어쨌든 고마워, 내 하루를 절약했습니다 :) – goFrendiAsgard

관련 문제