如何在本地计算机上获得向后兼容性,以便它可以在本地运行较旧的开源项目?

How can I get backwards compatibility on my local machine so it can run an older opensource project locally?

提问人:MnLsVt 提问时间:7/7/2023 最后编辑:MnLsVt 更新时间:7/7/2023 访问量:53

问:

我正在尝试建立一个名为accessmaps的开源项目,以查看和理解它的实际工作原理。问题是这个项目是几年前创建的,有些软件包不再受支持。

更具体地说,在项目的文档中,他们说为了使其工作,您必须使用另一个存储库生成一些数据。问题是,当我尝试使用此存储库的命令时,我遇到了这种错误:

[Thu Jul  6 13:14:03 2023]
Error in rule draw_sidewalks:
    jobid: 0
    output: interim/redrawn/sidewalks.geojson, interim/redrawn/streets.geojson

RuleException:
TypeError in line 496 of /data/cities/seattle/Snakefile:
'MultiPoint' object is not subscriptable
  File "/usr/local/lib/python3.8/site-packages/snakemake/executors/__init__.py", line 2326, in run_wrapper
  File "/data/cities/seattle/Snakefile", line 496, in __rule_draw_sidewalks
  File "/usr/local/lib/python3.8/site-packages/sidewalkify/draw/draw.py", line 39, in draw_sidewalks
  File "/usr/local/lib/python3.8/site-packages/sidewalkify/draw/trim.py", line 36, in trim
  File "/usr/local/lib/python3.8/site-packages/sidewalkify/draw/trim.py", line 61, in ixn_and_trim
  File "/usr/local/lib/python3.8/site-packages/snakemake/executors/__init__.py", line 568, in _callback
  File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
  File "/usr/local/lib/python3.8/site-packages/snakemake/executors/__init__.py", line 554, in cached_or_run
  File "/usr/local/lib/python3.8/site-packages/snakemake/executors/__init__.py", line 2357, in run_wrapper
Exiting because a job execution failed. Look above for error message

该版本分为 24 个作业,当它到达作业 11 时,它会崩溃,显示上述错误。

项目的需求文件包含以下包:

-e git://github.com/dezhin/osmread.git@d8d3fe5edd15fdab9526ea7a100ee6c796315663#egg=osmread
crossify==0.1.4
esridump==1.7.0
geopandas==0.4.0
rasterio==1.0a12
requests==2.21
scipy==1.0.1
sidewalkify==0.2.1
snakemake==4.8.0

我也在使用

numpy 1.19.5 

由于该项目不支持 numpy 版本>1.20。

我试图在某些软件包(如numpy)上回滚几个版本,但它实际上不起作用。我还尝试安装一些已弃用的依赖项的最新版本,但这也是一个死胡同。

python-3.x numpy 依赖数据 生成

评论

1赞 Giacomo Catenazzi 7/7/2023
我们在 python 上使用虚拟环境。其中一项功能是您可以使用旧版本设置环境。这确实是推荐的方法:始终为每个项目使用虚拟环境。
0赞 MnLsVt 7/8/2023
我正在使用 python3.8 venv 的虚拟环境。正如我在这个问题上提到的,问题可能出在其他依赖项上。
0赞 Giacomo Catenazzi 7/8/2023
创建新的虚拟环境。无论如何,我推荐conda(anaconda),它可以很容易地处理不同版本的Python(也是python2)。我认为处理环境可能很容易(注意:conda 是由 numpy 和 scipy 的主要贡献者创立的,用于解决 python 科学数据问题,这似乎是你的情况)。在任何情况下(使用所有环境管理):每个项目和需求都有一个环境(因此,如果您需要测试旧的(或将来的)库,则同一项目可能具有多个环境)
0赞 Wayne 7/11/2023
如果您获得的会话提供了足够的计算能力来执行您需要的操作,那么使用 MyBinder 设置配置文件以匹配您的需求可能是另一种方法。请参阅此处,了解 .您可能还需要将其设置为使用 ,使用旧的 Python。requirements.txtruntime.txt

答: 暂无答案