2

私がそのようなディレクトリ構造を持っているとしましょう:

 - Documents/
   - thesis_program/
     - __init__.py
     - classes.py
     - utils.py
     - GE_Test.py
   - GE_Test_fail.py

classes.pyとutils.pyには、いくつかのクラスと関数が含まれています。GE_Test.pyとGE_Test_fail.pyには、インポート部分を除いて、まったく同じコードが含まれています。GE_Test.pyで、クラスとutilsを次のようにインポートします

from utils import execute
from classes import Grammatical_Evolution

GE_Test_fail.pyにいる間、私はクラスとutilsを次のようにインポートします。

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

そして、予期せず、私は異なる結果を得る。ここに何か問題がありますか?モジュールを正しくインポートしますか?

特定のシードでランダムな数値を生成するため、結果が同じになるようにすることができます

また、utils.pyにはいくつかの一般的な関数があるため、classes.pyはutils.pyに依存しています。utilsもシステムで使われている名前だと思います。したがって、2番目のケース(GE_Test_fail.py)では、システムutilsが私のutils.pyをオーバーライドします。しかし、それは私には意味がないようです。

classes.pyとutils.pyの完全なソースコードはここから入手できます(何が問題なのかを発見するのに役立つ場合):https ://github.com/goFrendiAsgard/feature-extractor

また、スクリーンショット:https ://picasaweb.google.com/111207164087437537257/November25201204?authuser=0&authkey=Gv1sRgCOKxot2a2fTtlAE&feat=directlink

4

1 に答える 1

2

論文フォルダの外にあるテストファイルに以下の行を追加します。

import sys
sys.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

編集:

または、これを使用してより動的にします(注意:あなたとあなたが同じディレクトリにいることが常に可能であるとは限らないため
、パスを見つけようとしないでください;上記のようにコードで永続的に修正できる場合;その後、システムのどこからでも自由に使用できます)os.path.abspath('./thesis_program')test_filesthesis_folder

import os, sys
lib_path = os.path.abspath('./thesis_program')
sys.path.insert(0,lib_path)
于 2012-11-25T03:00:53.883 に答える