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我以这种方式导入类和实用程序:

from utils import execute
from classes import Grammatical_Evolution

GE_Test_fail.py中,我以这种方式导入类和实用程序:

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

出乎意料的是,我得到了不同的结果。这里有什么问题吗?我是否正确导入了模块?

我可以确保结果应该是相同的,因为我生成的随机数具有一定的种子

classes.py 也以某种方式依赖于 utils.py,因为我在 utils.py 中有几个常用函数。我怀疑 utils 也是系统使用的名称。所以在第二种情况下(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_files和你thesis_folder的在同一个目录中;如果你可以像上面一样在你的代码中永久修复它们; 那么你可以在你系统的任何地方自由使用它们)

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