Rig*_*Rig 9 fedora pythonpath project-layout python-3.x
我从上到下搜索过这个网站,但还没有找到一种方法来实际完成我想要的Python3x.这是一个简单的玩具应用程序,所以我想我可以在断言中编写一些简单的测试用例并将其称为一天.它确实会生成报告等,所以我想确保我的代码在更改时不会做任何事情.
我目前的目录结构是:(仅包括相关部分)
project
-model
__init__.py
my_file.py
-test
my_file_test.py
Run Code Online (Sandbox Code Playgroud)
我有一段时间让my_file_test.py导入my_file.py.
就像我说的那样.我从上到下搜索过这个网站,没有解决方案.我的Python版本是在Fedora 17上运行的3.2.3.
以前尝试过的尝试: https: //stackoverflow.com/questions/5078590/dynamic-imports-relative-imports-in-python-3从父文件夹导入模块 任何人都可以解释python的相对导入吗? 如何在python中完成相对导入
几乎在每次尝试中我都会收到错误:
ImportError:没有名为*OR ValueError的模块:在非包中尝试相对导入
这里发生了什么.我已经尝试了SO以及整个互联网上的所有接受的答案.没有做任何想象的事情,但作为一个.NET/Java/Ruby程序员,这被证明是直观性的绝对定义.
编辑:如果重要,我尝试加载我试图在REPL中导入的类,我得到以下内容:
>>> import datafileclass
>>> datafileclass.methods
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
>>> x = datafileclass('sample_data/sample_input.csv')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable
Run Code Online (Sandbox Code Playgroud)
如果它很重要......我知道类中的功能可以工作,但是我无法导入它在现在导致无法测试.将来肯定会引发整合问题.(名称已更改,以保护无辜者)在几周内获得库的此迭代所需的功能...任何帮助都可能有用.本来可以在Ruby中完成它,但客户希望Python作为一种学习体验,
eca*_*mur 10
像这样构建你的代码:
project
-model
__init__.py
my_file.py
-tests
__init__.py
test_my_file.py
Run Code Online (Sandbox Code Playgroud)
重要的是,您的tests目录也应该是一个模块目录(其中包含一个空__init__.py文件).
然后在test_my_file.py中使用from model import my_file,并从顶层目录运行python -m tests.test_my_file.这是test_my_file作为一个模块调用,这导致Python设置其导入路径以包括您的顶级.
更好的是,您可以使用pytest或nose,并且运行py.test将自动获取测试.
我意识到这不能回答你的问题,但是你可以更容易地使用Python标准实践而不是反对它们.这意味着在自己的顶级目录中使用测试构建项目.
| 归档时间: |
|
| 查看次数: |
5547 次 |
| 最近记录: |