在python 3中导入时抱怨参数为str /字节
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在python 3中导入时抱怨参数为str /字节,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1848字,纯文字阅读大概需要3分钟。
内容图文
我已经将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(不足为奇).我尝试将其从quaternion.numpy_quaternion更改为,但出现相同的错误.
我看到的是there have been changes to the import system in python 3,但如果有的话,我会猜想它会比其他方式更符合py3k.怎么了我该如何工作?
为了澄清起见,我的层次结构如下所示:
.../site-packages/
quaternion/
__init__.py
numpy_quaternion.so
出现问题的行之前唯一出现的就是将numpy导入为np,通常可以成功实现.
解决方法:
python列表中的人马上就给我很好的建议.原来我正在numpy_quaternion.so中导入某些东西(使用c-api),但是我对该函数给出的参数是错误的.我(基本上)使用的代码来自a similar package:
PyObject* numpy_str = PyString_FromString("numpy");
PyObject* numpy = PyImport_Import(numpy_str);
我通过使用修复了它
PyObject* numpy = PyImport_ImportModule("numpy");
正如J.F. Sebastian在评论中指出的那样,对我来说出错的原因是,当我使用python 3时,PyString_FromString只是错误函数的#define.
内容总结
以上是互联网集市为您收集整理的在python 3中导入时抱怨参数为str /字节全部内容,希望文章能够帮你解决在python 3中导入时抱怨参数为str /字节所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。