numpy와의 통합을 위해 updating a quaternions package이되었으므로 파이썬 2와 파이썬 3 모두에서 사용할 수 있습니다. 불행하게도 기본 가져 오기 단계는 3으로 비참하게 실패합니다. x, 파이썬 2.7에서는 결코 실패한 적이 없다. (나는 python2.7을 사용하여 2.7 버전을 컴파일하고 python3.x를 사용하여 3.x 버전을 컴파일한다. 이것은 매우 간단한 distutils이다.) 오류 메시지는 Google 결과에 나타나지 않으며, 전혀 모른다. 여기에서 어디로 가야합니까? 여기 파이썬 3에서 가져 오기가 str/bytes로 인수에 대해 불평합니다.
패키지 가져올 수있는 간단한 시도에서 전체 출력 : 오류 메시지가 적혀> 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
을,이
from .numpy_quaternion import quaternion
말 __init__.py
에서 선이다 그러나 이유는해야한다 문제가 있습니까? 파일 numpy_quaternion.so
은 __init__.py
파일과 동일한 디렉토리에 있으며 관련 기호가 포함 된 것으로 보입니다. Travis-CI은 2.7에서 잘 작동한다는 것을 보여 주지만 다른 테스트는 통과하지만 3.2와 3.4에서는 실패합니다. 따라서 파이썬 설치시 문제가있는 것은 아닙니다. 상대 가져 오기에 대해 .
을 제거하려고했지만 파이썬에서 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
전에 오는 유일한 방법입니다.
참고 : [Extension Modules to Python 3] (https://docs.python.org/3/howto/cporting.html) : * "C에서 Python 3의''PyString_ * '함수는 Python 2의''PyUnicode_ * ''*. 유니 코드 텍스트에는'PyString', 바이너리 데이터에는'PyBytes'를 사용하십시오. TypeError 질문에 Python 대신 Python 대신 PyBytes 사용하는 것이 좋습니다. – jfs
아하! 직접적으로,하지만 * do *는'#define PyString_FromString PyBytes_FromString'을하는'npy_3kcompat.h'를 포함합니다. 그래서 그것은 나에게 잘 보였지만, 그렇지 않았습니다. 실제로'PyString_FromString'은 python3에서도 정의되어 있지 않습니다. – Mike