- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个需要同时支持 Python 2 和 3 的 setup.py。
代码目前可以工作并且可以安装在 Python 2.x 中
如果我将 use_2to3 = True
子句添加到我的 setup.py,则该模块可以安装在 Python 3 中,但是,执行以下操作:
python setup.py test
导致失败,因为其中一个测试使用了 StringIO 类,Python 3 中的导入行错误(目前是 from StringIO import StringIO
,而在 Python3 中它应该是 from io导入 StringIO
我认为,一旦您添加 use_2to3 关键字,所有测试(包括单元测试)在测试之前都会由 2to3 处理。
我错过了什么?如果有帮助,我的大部分 setup.py 如下所示:
from setuptools import setup
setup(
name='myproject',
version='1.0',
description='My Cool project',
classifiers = [
'Programming Language :: Python',
'Programming Language :: Python :: 3',
],
py_modules=['mymodule'],
test_suite='test_mymodule',
zip_safe=False,
use_2to3 = True,
)
编辑:我觉得 2to3 没有在 python setup.py 测试
上运行的原因是它爆炸了,堆栈跟踪的底部显示:
File "/home/aparkin/temp/mymodule/test_mymodule.py", line 18, in <module>
from StringIO import StringIO
但是如果我在 test_mymodule.py 上运行 2to3,那么该导入行应该被修改为:
from io import StringIO
并且(在最坏的情况下)测试应该单独失败。
最佳答案
为了分发通过 2to3 获取您的模块并运行,它必须列在 py_modules 中。所以将其更改为:
py_modules=['mymodule', 'test_mymodule'],
不幸的是,这有一个副作用,即在您安装项目时安装 test_mymodule,这可能是您不想要的。对于这种情况,我通常会将项目转换为带有 mymodule.tests 子包的包。这样,测试就可以“可安装”,而不会增加额外的困惑。
关于python - setup.py 中的 2 到 3 没有涵盖测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10853688/
我的代码中有几个场景符合这种模式,我确信这是一个常见的编程问题。我想遍历一个数组或一个对象,并在每次迭代时运行一个(可能)异步函数。在当前迭代完成之前,我不希望下一次迭代开始。 如果处理是同步的,下面
我无法理解如何对函数进行单元测试,以便 Istanbul 尔认为它们已被覆盖。 举一个非常简单的例子,我创建了这个数学模块: var add = function( one, two ){ r
有谁知道是否有涵盖 Joshua Bloch 在他的 Effective Java 书中提出的大部分建议的检查样式规则汇编?我知道我可以在 checkstyle 插件中添加自定义规则,但我想知道是否有
我遇到了 const 和非 const 版本的相同代码重复问题。我可以用一些代码来说明问题。这里有两个示例访问者,一个修改访问对象,一个不修改。 struct VisitorRead { te
我想要一本能够真正让我全面了解使用 C#、TDD、ASP.NET MVC、DDD 和设计模式(例如存储库模式)的现代 ASP.NET 开发的书籍。我非常擅长 C# 和 ASP.NET MVC,但想填补
我最近开始使用 NexusLight ,一个功能测试自动化框架。是否有更多框架可以完成类似的工作? 相关问题:End-to-End application testing from a users s
我一直在寻找 Python 的实现,但运气不佳,该实现将中缀转换为前缀,范围内有足够数量的算术和逻辑运算符,并关心其在良好 Python 实现上的属性。 更具体地说,我对出现在 C 程序的条件子句中的
我正在使用 Google 新设计支持库中的新 CoordinatorLayout。 我有以下布局:
我使用 CSS 创建了下拉菜单,并且在导航栏正下方的框中放置了一个 YouTube 视频。使用 IE 8 时,下拉菜单落后于 YouTube 视频,尽管带有导航栏的 div 的 z-index 高于带
我想使用 TypeScript 来声明带有参数的函数,这些参数可以是常规 JavaScript 数组,也可以是类型化数组,但我找不到合适的方法来实现它。我希望有一个像这样的界面: interface
我是一名优秀的程序员,十分优秀!