2013-07-31 69 views
0

我喜欢将我的源代码与测试代码分开。所以,我有我的项目组织是这样的:从单元测试代码导入包

my_package/ 
    module1.py 
    module2.py 
tests/ 
    units/ 
    test_a.py 
    test_b.py 
    perf_tests.py 

应该如何test_a.py进口my_package

注:我GOOGLE了这一点(SO含),我不满意答案:

  • 我不想使用setup.py,因为我想从开发运行;这是一个测试,所有
  • 后,我不想使用符号链接或其他黑客
  • 我试过sys.path.append('../')sys.path.append(os.path.realpath('../'))。两者都导致ImportError: No module named my_package。也许类似的事情可以用PYTHONPATH完成 - 语法是什么?
  • 我想写一个适当的import声明,可以找到正确的文件
+0

你是什么意思“我应该如何加载源代码”?你在说什么导入东西?你想从哪个模块导入什么模块? ......什么是“适当包含”? ...... python中没有“includes”。 – Gerrat

+1

为什么不直接使用PYTHONPATH环境变量?多数民众赞成什么它的... –

+0

@Gerrat - 谢谢,重写了问题,以解决您的观点。 – SRobertJames

回答

0

首先,你必须包括__init__.py文件夹里面my_package为了让Python来此文件夹识别为有效的模块。例如,您可以创建一个空的__init__.py文件,只需一行pass

然后,你可以做这样的事情在test_a.py

import os 
bkp = os.getcwd() 
os.chdir(r'..\..') 
import my_package 
os.chdir(bkp) 

或者使用其他选项与PYTHONPATHsys.path.append()