【发布时间】:2014-10-20 16:52:05
【问题描述】:
我一直 updating a quaternions package 用于与 numpy 集成,因此它可以在 python 2 和 python 3 中使用。不幸的是,基本导入步骤在 3.x 中失败了,尽管它在 python 2.7 中从未失败过. (我用python2.7编译2.7版本,用python3.x编译3.x版本。distutils很简单的东西。)错误信息甚至没有出现在google的结果中,我只是不知道从这里到哪里去。
这是导入包的简单尝试的完整输出:
> python -c 'import quaternion'
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/Users/mynamehere/.continuum/anaconda/envs/py3k/lib/python3.4/site-packages/quaternion/__init__.py", line 3, in <module>
from .numpy_quaternion import quaternion
TypeError: __import__() argument 1 must be str, not bytes
正如错误消息所说,__init__.py 中有一行说
from .numpy_quaternion import quaternion
但是为什么会有问题呢?在与__init__.py 文件相同的目录下有一个文件numpy_quaternion.so,似乎包含相关符号。 Travis-CI 表明它在 2.7 中运行良好(其他测试通过),但在 3.2 和 3.4 中失败。所以这不仅仅是我的python安装有问题。我试图删除相对导入的.,但python找不到要从中导入的numpy_quaternion(不足为奇)。我尝试将其更改为from quaternion.numpy_quaternion,但我得到了同样的错误。
我看到there have been changes to the import system in python 3,但如果有的话,我猜想这将比其他方式更 py3k 兼容。怎么了?我怎样才能让它工作?
澄清一下,我的层次结构如下所示:
.../site-packages/
quaternion/
__init__.py
numpy_quaternion.so
在有问题的行之前唯一出现的是import numpy as np,它通常会成功,没有问题。
【问题讨论】:
标签: python python-2.7 python-3.x python-import python-c-api