我正在开发一个Python项目,其布局大致如下
project/
foo/
__init__.py
useful.py
test/
__init__.py
test_useful.py
试验_有用.py尝试导入project.foo.有用所以它可以测试它,但是当我说“python project/foo/test/test”时它就不起作用了_有用.py,但如果我把它复制到当前目录并运行“python test”就可以了_有用.py". 在
在开发过程中,如何正确处理这些进口产品?似乎这不会是一个问题,一旦安装,因为它将在PYTHONPATH。我应该使用distutils生成一个构建/文件夹并将其添加到PYTHONPATH中吗?在
首先,您需要设置PYTHONPATH以包含“project”或“project”的父级。这一点在开发时也很重要:-)
然后您应该能够使用绝对导入:
其次,我建议您安装py.测试(pip安装pytest)。那么你就可以使用相对进口,只要你py.测试调用足够通用(即“py.测试foo“会工作的,但是”py.测试foo/测试/测试_有用.py“不会的)。我仍然建议您在测试中使用相对导入。在
请考虑使用distutils/setuptools使您的项目可以用Python标准方式安装。(提示:您需要创建一个设置.py文件平行于'foo'目录,也称为包。)
这样做还可以让您使用许多常见的Python测试框架(nose,py.测试,以使收集和运行测试成为可能,其中大多数这样的框架在运行测试之前自动确保“foo”是一个可导入的包。你的测试_有用.py测试可以导入'很有用“没问题。在
从示例目录结构中还值得注意的是,似乎通常建议您的测试目录不是Python包。i、 删除test/init.py文件。该框架将确保测试是可运行的,而不是将其作为一个包将有助于确保它只在源代码发行版中分发,而不是在二进制发行版(可能不需要的地方)中分发
相关问题 更多 >
编程相关推荐