改了很久才import成功。期间查了不少东西,虽然大部分没用上,但还是记录一下。

PCRaster的安装和个人的最终解决方法

Software for environmental modelling | PCRaster

官网推荐新创建一个虚拟环境运行。看到conda于是打开prompt。

conda create --name pcraster -c conda-forge python pcraster spyder matplotlib

第一个pcraster是环境名称,python及以后是该虚拟环境下想要install的包,可以自行添加或者设定version(如下)。另pcraster应该是只在conda上发布了,因为使用pip(pypi)无法安装。没有尝试去掉-c,因此不知清华镜像是否有。

conda create --name pcraster37 -c conda-forge python==3.7 pcraster==4.3.0 matplotlib gdal

尝试在prompt里import。成功。

尝试在jupyter/spyder里import。失败。报错:

The 'Microsoft Visual C++ Redistributable for Visual Studio 2017' is required to run PCRaster, available at:
      https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
      DLL load failed: 找不到指定的程序。
      In case you cannot solve the issue please consult the PCRaster mailing list at:
      https://lists.geo.uu.nl/mailman/listinfo/pcraster-info

安装PyCharm。将anaconda里的虚拟环境pcraster37配置给Charm。尝试在PyCharm里import。成功。

关于Microsoft Visual C++ Redistributable和Visual Studio

可以粗暴地把Redistributable理解成一套dll配置。64位安x64,32位安x86。

上文报错中提供的地址可以下载微软推荐的2015-2019合体等效包。2015、2017、2019单独的要另行搜索。

2015、2017、2015-2019三种包互相不兼容。2019没试过。

Visual Studio Community安装。注意在pc已有Anaconda的情况下,安装Visual Studio时勾选安装conda或python相关的复选框需谨慎。Visual Studio有修改环境变量的操作,Anaconda相关变量可能会在此过程被他修改。另外用户目录下的.jupyter的虚拟环境路径清单只保留了路径,而没有命名,因此最坏的结果是conda下的所有虚拟环境都只剩下了路径而丢失了虚拟环境的命名。

import error: DLL load failed

这个事情有关path与乱七八糟的DLL,还有python的各种IDE。

有很多外国人写了类似《python如何找到你下的包》的东西,知乎也有很多,不赘述。

总结一下我用了的操作,凭感觉排了个序:

① 在cmd/prompt/env中运行python,看是否能import成功。不能,则转到②;能,则转到⑤。

② 添加*,*/Library/bin和*/Scripts。临时补救用sys.path.add(),长期使用则把路径添加到PATH。一般直接加到PATH里。

③ 考虑使用老版本(典型事例TensorFlow2.0)。

④ 如果你头铁,那么可以学程序员debug。下一节pyd文件与dll里或许有可以帮忙的,或许没有。

⑤ 分别查看cmd界面里的和你用的IDE里的sys.executable和sys.path的结果。executable不同则一般来说path也不同,需要你再去搜索如何同核启动;如果奇葩地出现了executable相同但path不同的情况,那么就手动改一下path;如果两者都相同,我没有搜索到解决方法,所以直接换了IDE。

pyd文件与dll

21 try:

22     from ._pcraster import *

23 except ImportError as error:

ImportError: DLL load failed: 找不到指定的程序。

_pcraster是一个pyd文件。在第19行有备注:# Check if we can import our compiled module

搜索到Dependency Walker软件可以用于查看各种文件的依赖关系:Dependency Walker使用说明 - 古立 - 博客园 (cnblogs.com)

Dependency Walker使用注意事项:① 2005年即停止更新的软件,界面怀旧运行慢;② 一些dll不是单独的,而是形成一个系列,一系列各成分齐全就可以正常运行,而Dependency Walker系列中缺失了一个就会像你报错,例如Windows API Sets,这部分的缺失报告可以无视。

可根据Dependency Walker查到的缺失dll来添加path。

PCRaster安装的更多相关文章

  1. Linux 平台PostGIS安装

    1.前提条件: postgresql 9.6.1 已经通过源码方式安装完成并可成功运行. 2. other OS packets OS: CentOS 6.4 X64 X64: libxml2-dev ...

  2. MS4W安装教程

    简介 欢迎使用MS4W,这是由Gateway Geomatics开发的快速简便的安装程序,用于为Windows及其附带应用程序(如Geomoose.MapBender.Openlayers等)设置Ma ...

  3. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  4. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

  5. Sublime Text3安装JsHint

    介绍 Sublime Text3使用jshint依赖Nodejs,SublimeLinter和Sublimelinter-jshint. NodeJs的安装省略. 安装SublimeLinter Su ...

  6. Fabio 安装和简单使用

    Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...

  7. gentoo 安装

    加载完光驱后 1进行ping命令查看网络是否通畅 2设置硬盘的标识为GPT(主要用于64位且启动模式为UEFI,还有一个是MBR,主要用于32位且启动模式为bois) parted -a optima ...

  8. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  9. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  10. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

随机推荐

  1. 自定义注解+反射提取对象到map中

    一.问题:有时候我们与第三方接口对接传参时,需要将对象里的字段和值以map形式传给别人,此时可以借助其他的工具类,但是我个人用起来不太灵活,还会把多余的字段传给别人,因此我们自己动手搞一套 二.思路: ...

  2. perl正则

    名字 表达式 如果子表达式成功则 - positive lookahead (零宽度正预测先行断言 ) (?=subexp) 如果匹配到右边则成功 negative lookahead (零宽度负预测 ...

  3. java基于ssm框架开发的视频论坛网站源码

    简介 Java基于ssm开发的视频论坛网站,普通用户可以浏览视频搜索视频评论点赞收藏视频,关注用户.还可以浏览新闻,发布帖子到论坛. 演示视频 https://www.bilibili.com/vid ...

  4. struts2 显示表格

    <%@ taglib uri="/struts-tags" prefix="s"%> <h3>All Records:</h3&g ...

  5. 发现C++程序中未释放的内存空间

    本篇先后介绍在windows中使用visual studio定位未释放的内存.在linux中使用valgrind定位未释放的内存. Windows+Visual Studio 2015 (企业版) 准 ...

  6. 使用 Nginx 如何部署 web 项目

    第一步:前往 Nginx 官方 下载 Nginx 资源包,建议下载 Stable version(长期稳定版本)  第二步:将 Nginx 压缩包解压到本地目录中(D:\Tools)  第三步:进入到 ...

  7. Kettle初使用

    Kettle的使用还是比较简单,但使用过程中会遇到一些问题: 1.mysql8以上版本连接数据库的时候汇报如下错误: 解决方法:参考链接:https://www.cnblogs.com/wuzaipe ...

  8. Profiler中WaitForTargetFPS详解【转】

    WaitForTargetFPS 该参数一般出现在 CPU开销过低,且通过设定了目标帧率的情况下(Application.targetFrameRate).当上一帧低于目标帧率时,将会在本帧产生一个W ...

  9. jQuery 获取鼠标点击的元素ID

    $(function(){ $(document).click(function(e) { // 在页面任意位置点击而触发此事件 var v_id = $(e.target).attr('id'); ...

  10. Leetcode 二维数组周游 54

    给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ...