IDL 8.7 Python Bridge 试用
在 HARRIS 官网 申请了 IDL 8.7 的 Linux 版本试用, 咨询客服之后终于收到了链接.
先测试一下 Python Bridge 功能.
- Ubuntu 16.04 LTS
- Python 3.6 Anaconda
- 需要使用收到的激活码 (试用期一个月. 激活之后运行程序不会自动退出)
1. 安装
下载之后解压这两个文件:
envi55-linux.tar.gz
flexnetserver2017.08-linux.tar.gz
以安装至 ~/software/harris
为例.
执行安装脚本:
1 | $ ./envi55-linux/install.sh |
添加路径到 ~/.bashrc
(注意将
miniconda3/lib
替换成你的 python lib 路径):
1 | # ~/.bashrc |
(如果 miniconda3/lib
加入到 LD_LIBRARY_PATH
之后影响了其他程序使用, 因此处理方法见 Troubleshooting)
随后
1 | $ source ~/.bashrc |
2. 激活
经过上述步骤, 图形界面的激活程序 harrislicense
已被加入系统路径.
打开
1 | $ harrislicense |
或使用命令行
1 | $ cd ~/software/harris/envi/idl/license_utils/bin.linux.x86_64 |
必要时将会提示需要 root 权限.
3. 安装 IDL Python bridge
首先确认 python 命令在系统路径 PATH
中.
安装
1 | $ cd ~/software/harris/envi/idl/lib/bridges |
4. 使用
能使用的功能比较有限.
1 | from idlpy import * |
1 | IDL> >>>import matplotlib.pyplot as plt |
注意用这种写法时, python 的 >>>
提示符之后没有空格.
或使用语句块 (Enter 退出):
1 | IDL> >>> |
或使用以下方式将 python 语句结果赋值:
1 | IDL> np = Python.Import('numpy') |
其他用法参见官方文档:
5. Troubleshooting
出现 > .../lib/libuuid.so.1: no version information available ...
这是因为使用 anaconda 的 python, 默认调用的是 anaconda 的 libuuid.so.1, 版本较低, 使用系统的 libuuid.so.1 即可解决.
或者出现 miniconda3/lib
加入
LD_LIBRARY_PATH
之后影响其他程序调用的情况.
同时考虑可能出现的这两种问题的解决办法如下:
使用自定义脚本替代 idl
命令
由于 idl 使用了 alias
来调用程序, 优先级最高, 因此需要在
.bashrc
中重新 alias
.
以 miniconda3 为例, 新建脚本(注意替换相应路径):
1 |
|
假设将脚本放在 ~/bin
, 保证该路径在 PATH
中
( export PATH=$HOME/bin:$PATH
).
在 ~/.bashrc
中去掉 安装 中添加的
LD_LIBRARY_PATH
行, 并在 envi_setup.bash
行之后添加:
1 | alias idl=$HOME/bin/idl |
执行
1 | $ source ~/.bashrc |
之后再用 idl
命令即调用的是自定义的脚本.