没有名为 'pyarrow._orc' 的模块
No module named 'pyarrow._orc'
我在 Windows 10 上使用 Anaconda 中的 pyarrow.orc 模块时遇到问题。
import pyarrow.orc as orc
抛出异常:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\apps\Anaconda3\envs\ws\lib\site-packages\pyarrow\orc.py", line 23, in <module>
import pyarrow._orc as _orc
ModuleNotFoundError: No module named 'pyarrow._orc'
另一方面:
import pyarrow
工作没有任何问题。
conda list
# packages in environment at C:\apps\Anaconda3\envs\ws:
#
# Name Version Build Channel
arrow-cpp 0.13.0 py37h49ee12d_0
...
numpy 1.17.3 py37h4ceb530_0
numpy-base 1.17.3 py37hc3f5095_0
...
pip 19.3.1 py37_0
pyarrow 0.13.0 py37ha925a31_0
...
python 3.7.5 h8c8aaf0_0
...
我试过其他版本的 pyarrow,结果相同。
conda -V
conda 4.7.12
前面的底线,
我有同样的错误。这是我的解决方案:
!pip install pyarrow==0.13.0
我不确定这是否仅限于 Windows 10,最近几天我在 AWS Sagemaker 中遇到了同样的错误。这在以前的 Sagemaker 实例上运行良好。
使用 Jupyter 中的 Conda Packages 菜单,conda_python3 内核显示它从 https://repo.anaconda.com/pkgs/main/linux-64 安装了 pyarrow 0.13.0,build py36he6710b0_0。
但是随后调用
!conda -list
没有显示 pyarrow 在 Jupyter conda_python3 内核中,即使在重新启动内核后也是如此。
通常在 Sagemaker [Jupyter notebook] 实例中,我会使用 !pip 命令,因为它们似乎工作得更好,并且没有我有时会在 Conda Packages 菜单中发现的超时错误。 (另外,我不需要担心传递 -y
标志,安装就这么发生了)
通常 !pip install pyarrow
可以正常工作,但我注意到它从 2019 年 11 月 1 日开始安装 pyarrow 0.15.1。
也许那个版本在加载 _orc 包时出错,或者其他一些冲突的库。
我的直觉是 pyarrow 0.13.0 的 conda 版本和 pyarrow 0.15.1 有问题。
在 Jupyter 单元格中,我尝试了这个:
!pip uninstall pyarrow -y
!pip install pyarrow
from pyarrow import orc
输出:
Uninstalling pyarrow-0.15.1:
Successfully uninstalled pyarrow-0.15.1
Collecting pyarrow
Downloading https://files.pythonhosted.org/packages/6c/32/ce1926f05679ea5448fd3b98fbd9419d8c7a65f87d1a12ee5fb9577e3a8e/pyarrow-0.15.1-cp36-cp36m-manylinux2010_x86_64.whl (59.2MB)
|████████████████████████████████| 59.2MB 381kB/s eta 0:00:01
Requirement already satisfied: numpy>=1.14 in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from pyarrow) (1.14.3)
Requirement already satisfied: six>=1.0.0 in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from pyarrow) (1.11.0)
Installing collected packages: pyarrow
Successfully installed pyarrow-0.15.1
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-6-36378dee5a25> in <module>()
1 get_ipython().system('pip uninstall pyarrow -y')
2 get_ipython().system('pip install pyarrow')
----> 3 from pyarrow import orc
~/anaconda3/envs/python3/lib/python3.6/site-packages/pyarrow/orc.py in <module>()
23 from pyarrow import types
24 from pyarrow.lib import Schema
---> 25 import pyarrow._orc as _orc
26
27
ModuleNotFoundError: No module named 'pyarrow._orc'
请注意,当您尝试卸载pyarrow 0.15.1 并安装特定的旧版本(如0.13.0)时,您应该在卸载后重新启动内核。有一些不兼容的二进制文件被遗忘。
我没有 post 那个输出,因为它太长了。
pip uninstall pyarrow -y
重启内核,然后:
!pip install pyarrow==0.13.0
from pyarrow import orc
输出:
Collecting pyarrow==0.13.0
Using cached https://files.pythonhosted.org/packages/ad/25/094b122d828d24b58202712a74e661e36cd551ca62d331e388ff68bae91d/pyarrow-0.13.0-cp36-cp36m-manylinux1_x86_64.whl
Requirement already satisfied: numpy>=1.14 in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from pyarrow==0.13.0) (1.14.3)
Requirement already satisfied: six>=1.0.0 in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from pyarrow==0.13.0) (1.11.0)
Installing collected packages: pyarrow
Successfully installed pyarrow-0.13.0
导入命令现在没有错误,可以再次读取orc文件。
Windows 完全不支持 ORC reader,而且据我所知从未如此。 C++ 中的 Apache ORC 还不知道可以使用 Visual Studio C++ 编译器构建。
下面的代码解决了我在 windows 上的问题。需要安装 pyorc 。它与普通 python 配合使用效果很好,不需要 conda。请参考 Alfred Zhong 的视频 https://www.youtube.com/watch?v=qvV_Frc6zB8。他很好地解释了它。
import pyorc
import pandas as pd
data = open('file1.orc','rb')
reader = pyorc.Reader(data)
columns = reader.schema.fields
columns =[col_name for col_idx,col_name in sorted(
[
(reader.schema.find_column_id(c), c) for c in columns
]
)]
df=pd.DataFrame(reader,columns=columns)
df.to_csv('file1.csv')
我在 Windows 10 上使用 Anaconda 中的 pyarrow.orc 模块时遇到问题。
import pyarrow.orc as orc
抛出异常:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\apps\Anaconda3\envs\ws\lib\site-packages\pyarrow\orc.py", line 23, in <module>
import pyarrow._orc as _orc
ModuleNotFoundError: No module named 'pyarrow._orc'
另一方面:
import pyarrow
工作没有任何问题。
conda list
# packages in environment at C:\apps\Anaconda3\envs\ws:
#
# Name Version Build Channel
arrow-cpp 0.13.0 py37h49ee12d_0
...
numpy 1.17.3 py37h4ceb530_0
numpy-base 1.17.3 py37hc3f5095_0
...
pip 19.3.1 py37_0
pyarrow 0.13.0 py37ha925a31_0
...
python 3.7.5 h8c8aaf0_0
...
我试过其他版本的 pyarrow,结果相同。
conda -V
conda 4.7.12
前面的底线, 我有同样的错误。这是我的解决方案:
!pip install pyarrow==0.13.0
我不确定这是否仅限于 Windows 10,最近几天我在 AWS Sagemaker 中遇到了同样的错误。这在以前的 Sagemaker 实例上运行良好。
使用 Jupyter 中的 Conda Packages 菜单,conda_python3 内核显示它从 https://repo.anaconda.com/pkgs/main/linux-64 安装了 pyarrow 0.13.0,build py36he6710b0_0。
但是随后调用
!conda -list
没有显示 pyarrow 在 Jupyter conda_python3 内核中,即使在重新启动内核后也是如此。
通常在 Sagemaker [Jupyter notebook] 实例中,我会使用 !pip 命令,因为它们似乎工作得更好,并且没有我有时会在 Conda Packages 菜单中发现的超时错误。 (另外,我不需要担心传递 -y
标志,安装就这么发生了)
通常 !pip install pyarrow
可以正常工作,但我注意到它从 2019 年 11 月 1 日开始安装 pyarrow 0.15.1。
也许那个版本在加载 _orc 包时出错,或者其他一些冲突的库。
我的直觉是 pyarrow 0.13.0 的 conda 版本和 pyarrow 0.15.1 有问题。
在 Jupyter 单元格中,我尝试了这个:
!pip uninstall pyarrow -y
!pip install pyarrow
from pyarrow import orc
输出:
Uninstalling pyarrow-0.15.1:
Successfully uninstalled pyarrow-0.15.1
Collecting pyarrow
Downloading https://files.pythonhosted.org/packages/6c/32/ce1926f05679ea5448fd3b98fbd9419d8c7a65f87d1a12ee5fb9577e3a8e/pyarrow-0.15.1-cp36-cp36m-manylinux2010_x86_64.whl (59.2MB)
|████████████████████████████████| 59.2MB 381kB/s eta 0:00:01
Requirement already satisfied: numpy>=1.14 in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from pyarrow) (1.14.3)
Requirement already satisfied: six>=1.0.0 in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from pyarrow) (1.11.0)
Installing collected packages: pyarrow
Successfully installed pyarrow-0.15.1
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-6-36378dee5a25> in <module>()
1 get_ipython().system('pip uninstall pyarrow -y')
2 get_ipython().system('pip install pyarrow')
----> 3 from pyarrow import orc
~/anaconda3/envs/python3/lib/python3.6/site-packages/pyarrow/orc.py in <module>()
23 from pyarrow import types
24 from pyarrow.lib import Schema
---> 25 import pyarrow._orc as _orc
26
27
ModuleNotFoundError: No module named 'pyarrow._orc'
请注意,当您尝试卸载pyarrow 0.15.1 并安装特定的旧版本(如0.13.0)时,您应该在卸载后重新启动内核。有一些不兼容的二进制文件被遗忘。 我没有 post 那个输出,因为它太长了。
pip uninstall pyarrow -y
重启内核,然后:
!pip install pyarrow==0.13.0
from pyarrow import orc
输出:
Collecting pyarrow==0.13.0
Using cached https://files.pythonhosted.org/packages/ad/25/094b122d828d24b58202712a74e661e36cd551ca62d331e388ff68bae91d/pyarrow-0.13.0-cp36-cp36m-manylinux1_x86_64.whl
Requirement already satisfied: numpy>=1.14 in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from pyarrow==0.13.0) (1.14.3)
Requirement already satisfied: six>=1.0.0 in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from pyarrow==0.13.0) (1.11.0)
Installing collected packages: pyarrow
Successfully installed pyarrow-0.13.0
导入命令现在没有错误,可以再次读取orc文件。
Windows 完全不支持 ORC reader,而且据我所知从未如此。 C++ 中的 Apache ORC 还不知道可以使用 Visual Studio C++ 编译器构建。
下面的代码解决了我在 windows 上的问题。需要安装 pyorc 。它与普通 python 配合使用效果很好,不需要 conda。请参考 Alfred Zhong 的视频 https://www.youtube.com/watch?v=qvV_Frc6zB8。他很好地解释了它。
import pyorc
import pandas as pd
data = open('file1.orc','rb')
reader = pyorc.Reader(data)
columns = reader.schema.fields
columns =[col_name for col_idx,col_name in sorted(
[
(reader.schema.find_column_id(c), c) for c in columns
]
)]
df=pd.DataFrame(reader,columns=columns)
df.to_csv('file1.csv')