Meep是一个基于时域有限差分(finite-difference time-domain, FDTD)方法进行电磁仿真的免费开源软件包,应用范围广泛。

安装环境准备

Windows下安装meep,还是需要安装类Linux系统。我(win10系统)采用的是:安装Ubuntu app;win8及以前的系统可以安装Cygwin。
1.在安装ubuntu app之前需要在控制面板中,找到程序与功能,然后启用“启用或关闭windows功能选项卡”中的适用于linux的windows子系统,如下图:
在这里插入图片描述
2.打开Microsoft Store,搜索 Ubuntu,安装
在这里插入图片描述
在这里插入图片描述
安装好之后如下图所示:
在这里插入图片描述
双击打开,等待Linux系统安装完成,会要求输入username,注意一定以小写字母开头,然后是密码。

安装miniconda

打开刚才安装好的ubuntu ,输入下面的命令,该命令是将miniconda下载到本地的当前目录,然后需要安装它。

wget https://repo.continuum.io/miniconda/Miniconda3-latest_Linux-x86_64.sh -o miniconda.sh

接着输入如下命令,安装miniconda

bash Miniconda3-latest-Linux-x86_64.sh

运行结果如下图所示:
在这里插入图片描述
接下来一直enter,直到询问接收license terms时,输入yes,如下图所示:
在这里插入图片描述
询问安装位置,一般来说,按enter选择默认位置即可。(我安装的时候好像不小心点到哪里了,就换了一个安装位置)
在这里插入图片描述
询问是否对刚才的安装文件夹初始化(我这个描述可能不太准确),yes即可
在这里插入图片描述

此时应该默认加入了环境变量,可以尝试

which python

我的没有反应
在这里插入图片描述
上网查了以后,解决方法如下,输入如下命令:

export PATH=/home/ubuntu系统的用户名/miniconda(前面询问安装位置的时候如果没有修改的话就是这个)/bin/:$PATH

在使用which python命令就可以看到Python的路径了
在这里插入图片描述

安装meep

为了不影响其他的功能,我们安装在虚拟环境”mp”中,输入如下命令:

conda create -n mp -c conda-forge pymeep

我又又又报错了(鲨了我吧)
在这里插入图片描述
上网查了一下,默认镜像源访问速度过慢,会导致超时从而导致更新和下载失败。解决方案:更换镜像源为清华镜像源,并且删除默认镜像源。
在**用户根目录(C:\Users\用户名)**下找到.condarc文件,打开将原有内容替换成如下代码:

channels:
  - defaults
show_channel_urls: true
default_channels:
  - http://mirrors.aliyun.com/anaconda/pkgs/main
  - http://mirrors.aliyun.com/anaconda/pkgs/r
  - http://mirrors.aliyun.com/anaconda/pkgs/msys2
custom_channels:
  conda-forge: http://mirrors.aliyun.com/anaconda/cloud
  msys2: http://mirrors.aliyun.com/anaconda/cloud
  bioconda: http://mirrors.aliyun.com/anaconda/cloud
  menpo: http://mirrors.aliyun.com/anaconda/cloud
  pytorch: http://mirrors.aliyun.com/anaconda/cloud
  simpleitk: http://mirrors.aliyun.com/anaconda/cloud


如果找不到.condarc的可以自己创建一个,但是千万不要动安装路径下(如下)的condarc(不要问我为什么知道,都是血的教训!)

C:\Users\电脑用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\ubuntu系统用户名

如果有出现这种情况(就不管输入什么命令都只出现[y/N],再输入y也没用。)可能就是和我一样动了安装路径下的condarc文件,赶紧改回来。
在这里插入图片描述

言归正传:保存好之后重新在ubuntu中输入安装在虚拟环境中的那条指令,成功啦!
在这里插入图片描述
接下来激活虚拟环境

conda activate mp

可以看到,命令前面出现了(mp)
这张图不知道为啥糊了

测试是否成功

打开python,加载meep库
在这里插入图片描述
它又报错了!
查了一下,问题可能在:
在这里插入图片描述
在这里插入图片描述
检索so.6,但是安装路径下只有so.7
试图强行安装

conda install libctlgeom.so.6

在这里插入图片描述
失败了,大概意思应该是清华的镜像源找不到这个文件。特意查了一下:
4 个 Anaconda 国内开源镜像站
通过如下代码添加镜像源:(前面默认镜像源访问速度过慢导致下载失败的错误也可以用下面这种方法更换镜像源)

# 添加
conda config --add channels https://xxxxxxxxxxxx
conda config --set show_channel_urls yes
# 查看效果
cat ~/.condarc

添加好之后再一次尝试conda install libctlgeom.so.6,以失败告终
在这里插入图片描述
我没辙了。。。。。。。(写于2021.12.4)
2021.12.5更新
睡了一觉起来打开电脑,继续尝试import,它居然换了个错误
在这里插入图片描述
上网查了一下产生报错的原因可能有:当前文件被占用了、用户没有访问权限、打开目标不是文件
解决方案:检查打开的是否位文件,Linux中用“/”表示路径,Windows中用“\”表示路径,即是否多加了斜杠;文件是否被占用,如打开文件后没有关闭,即 变量.close();亦或者检查文件是否存在,及用chmod命令修改用户权限。
我最后采用的方法是找到该文件所在的文件夹,右键属性查看属性状态,不要选择只读
在这里插入图片描述
重新import,无效。
又询问一些热心网友,可能是python版本不对,我看了一下:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
meep环境中(3.6.15),miniconda环境下(3.9.5),windows系统下(3.6.8)的python版本都不同
于是试图通过如下指令在miniconda环境下安装3.6版本的python

conda create -n py36(这个名字可以自己取) python=3.6

然后在
C:\Users\电脑用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\Ubuntu系统用户名\Miniconda3\envs
这个路径下出现了py36的文件夹。使用conda info命令却发现python的版本仍然是3.9(鲨了我吧)
最后!
有人建议我重装meep,那行吧
先关闭conda环境

conda deactivate

再卸载mp

conda remove --name mp --all

在这里插入图片描述
重新安装meep,激活mp环境,打开python,import,没有报错了!
在这里插入图片描述
可以看到重装以后的python是3.9版本的。前面出问题应该就是这个原因。
ps:如果不重装meep,而是在激活mp环境没问题以后,输入python3.9,然后import,会不会实现重装同样的效果呢?有兴趣的小伙伴可以尝试一下

一点感慨

装这个装了五天,虽然不是完完整整的五天,但是中间真的很崩溃,怀疑人生的那种。所以我就想着一定要把我踩过的坑记下来,尽可能多帮到一些小伙伴。文中如果表述不正确的地方欢迎大家指出。

Logo

更多推荐