请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6846|回复: 6

[求助] IDL调用python失败

[复制链接]

新浪微博达人勋

发表于 2019-7-5 09:49:02 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
我的电脑装有anaconda3,python3.7,python2.7,IDL8.5


操作help中有关python的很多例子,IDL总是报错:
% PYTHON::LOAD: Unable to find a valid Python installation.


今天看了HARRIS官网:
http://www.harrisgeospatial.com/docs/WhatsNew.html
上面说IDL8.7.2的新特性之一是:
The IDL Python bridge has now supports Python 3.6.7
既然python3.6.7从IDL8.7才开始支持,那IDL8.5是不支持python3.6.7的,就更不支持python3.7了!


启动cmd,键入“python”,发现默认的版本是python3,于是我找到python2的安装路径(从anaconda的environment中装的):
C:\ProgramData\Anaconda3\envs\Python_Environment27
将其放入系统变量中,抬升到Anaconda系统变量之前,这样它会被先检索到:
飞鸽截图20190705094306.png
启动cmd,键入“python”:
python2.7.png
发现现在默认的是python2.7了


悲剧的是,我之后用IDL操作python相关代码,不报错,而是直接闪退!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-7-5 13:39:06 | 显示全部楼层
胡乱试验:
-----------------------------------------
我把系统变量中
C:\ProgramData\Anaconda3\envs\Python_Environment27
删除后,IDL又恢复了报错但不闪退的状态
再加入,不闪退,报错。
实在是搞不清楚!
-----------------------------------------
有没有添加python2.7路径,在cmd中查询python都会说环境未激活:
This Python interpreter is in a conda environment, but the environment has
not been activated.  Libraries may fail to load.
激活环境很简单:
激活python环境.png
不过,anaconda似乎是自动激活当前环境的
-----------------------------------------
又从版本问题入手,我看别人的帖子用的有用python2.7.10运行成功的,
我安装了2.7.10,并把路径加入系统变量,处于其他python版本路径之上,
但是依旧报错
我将其他python或anaconda的路径从系统变量删除,IDL操作python闪退
现在我准备重启电脑......待续

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-5 14:46:59 | 显示全部楼层
我用手机超慢录像捕捉了闪退一瞬间的IDL提示:%Loaded DLM: PYTHON27.
这句是正常的,网上正常运行的代码都有这句提示。
1113601723.jpg

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-5 15:40:29 | 显示全部楼层
也有网友遇到了闪退问题:
https://www.jianshu.com/p/41345a4b7d97
“可能是由于版本问题,虽然成功把IDL的kernel集成进了jupyter,但是只能运行简单命令,最大的问题在调用函数时如果出错,会宕机。
尝试用IDL-Python Bridge来调用IDL程序。在IDL的IDE中,调用Python闪退,但是在Python中可以顺利调用IDL,而且能够在jupyter中输出error信息。”

我试了在spyder中调用IDL,果然可以:
飞鸽截图20190705153649.png
以前我在eclipse用Java调用IDL也是顺利的(反过来没试过)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-5 17:38:23 | 显示全部楼层
既然IDL调用python不可行,现在主攻python调用IDL。
经试验:
python2.7.16调用IDL正常
python3.7.3和python3.6.8调用IDL报错:
ModuleNotFoundError: No module named 'pythonidl36'
发现一个奇怪的事:
anaconda中我新建了一个python3.5的环境,但是操作时python版本变成了3.7后来新建python3.5的环境,anaconda没反应,原因不知,同学说可能是某些库导致了升级

所以,目前python3.5调用IDL无法测试。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-10-28 16:20:39 | 显示全部楼层
楼主可以   
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-12-11 16:41:42 | 显示全部楼层
楼主是自己购买的正版idl吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表