geopandas 在打包为包时使用 fiona.errors.DriverError 读取 shp 文件

问题描述 投票:0回答:2

我有这样的包结构:

├── LICENSE
├── README.md
├── main
│   ├── __init__.py
│   ├── application.py
│   ├── core_function
│   │   ├── __init__.py
│   │   └── maps
│   │       ├── Taiwan
│   │       ├── Taiwan_detailed
│   │       └── taiwan.txt
└── setup.py

我试着用

python setup.py develop
来包裹这个包裹。 当它在application.py中运行
Taiwan = gpd.read_file(pkg_resources.resource_stream(__name__, 'maps/Taiwan/COUNTY_MOI_1090820.shp'))
时,
fiona.errors.DriverError: '/vsimem/9b633f8a8a3f457eadf710539afd2a22' not recognized as a supported file format.
或 会发生
fiona._err.CPLE_OpenFailedError: '/vsimem/9b633f8a8a3f457eadf710539afd2a22' not recognized as a supported file format.

当我在我的机器上将其作为脚本运行时,它读取得很好,但作为包运行时却失败了。

知道 shp 文件应该与该文件夹中的所有文件一起读取,在我的 setup.py 中我也包含它们

packages= setuptools.find_packages(),
package_data={'maps': ['main/core_function/maps/*','core_function/maps/Taiwan/*']},

我以为是路径问题,但是taiwan.txt可以读取。

如有任何建议,我们将不胜感激。预先感谢。

python-3.x geopandas setup.py fiona
2个回答
0
投票

到目前为止我还没有找到原因。 但我改为使用 to_file 方法并且仅处理一个文件。

.to_file("package.gpkg", driver="GPKG")
这在我的包中有效。该问题可能是由于读取多个文件造成的。


0
投票

有点晚了,但我希望它可以帮助有类似问题的人。我遇到了类似的问题,可以通过使用像这样的绝对路径来修复它:

Taiwan = gpd.read_file(Path(__file__).parent.resolve() / 'relative path to .shp file')
© www.soinside.com 2019 - 2024. All rights reserved.