我在我的简单python代码中得到了'module' object has no attribute 'Vector3'错误。
这是rightAngle.py文件
import meep as mp
import math
cell = mp.Vector3(16, 8, 0)
geometry = [mp.Bloack(mp.Vector3(1e20, 1, 1e20),
center = mp.Vector3(0, 0),
material = mp.Medium(epsilon = 12))]
sources = [mp.Source(mp.ContinuousSource(frequency = 0.15),
component = mp.Ez,
center = mp.Vector3(-7, 0))]
pml_layers = [mp.PML(1.0)]
resolution = 10使用以下命令进行比较:
python rightAngle.py >& rightAngle.out并获得以下输出:
Traceback (most recent call last):
File "rightAngle.py", line 4, in <module>
cell = mp.Vector3(16, 8, 0)
AttributeError: 'module' object has no attribute 'Vector3'我所要做的就是从这个相当可靠的source中复制和粘贴给定的代码,但在Vector3对象中遇到错误。
Python版本:
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2我不知道我错过了什么?
Meep文档:https://meep.readthedocs.io/en/latest/Python_Tutorials/Basics/
发布于 2018-01-31 02:40:00
当尝试在Ubuntu 16.04上使用它时也遇到了同样的问题。
对我来说起作用的是为Python2.7安装Anaconda并使用以下命令创建their recommended environment:
conda create -n mp -c chogan -c defaults -c conda-forge pymeep
在那之后就没有Vector3问题了。
发布于 2021-10-02 01:10:17
我的环境脚本在下面,但我不会在这里详细介绍。我的计划是基于我当前的工作设置创建一个git存储库,并将其在Github上公开,这将迫使我组织整个设置,并使其对其他人有用。
下面的脚本允许我在没有Anaconda3的情况下使用python3运行Meep。这样你就可以使用最新的包和git源码来构建Meep、Open MPI和支持库。我的主目录被替换为
#!/bin/bash
export MPI_PROJ=/home/<USER>/projects/mpi
export MPI_BASE=/usr/local/mpi/openmpi/base
export MPI_411=$MPI_BASE/411
#
# CRITICAL ENVARS - THESE MUST BE SET AS FOLLOWS FOR THE EXISTING MEEP, MPB AND OPENMPI 4.1.1
#
export LD_LIBRARY_PATH="/usr/local/mpi/meep/latest/lib:/usr/local/mpi/openmpi/base/411/bin:/home/fraser/.local/bin:/usr/local/bin:/usr/bin:/opt/bin:/bin:/sbin:/home/fraser/projects/mpi/bin"
export CFLAGS="-I/usr/local/mpi/meep/latest/include -I/usr/local/mpi/mpb/latest/include -I/usr/include/python3.8"
export PKG_CONFIG_PATH="/usr/local/mpi/meep/latest/lib/pkgconfig:/usr/local/mpi/openmpi/base/411/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/local/mpi/meep/latest/lib/pkgconfig"
export LDFLAGS="-L/usr/local/mpi/openmpi/base/411/lib -L/usr/local/mpi/meep/latest/lib -lmpi -lmpb"
export PYTHONPATH="/home/fraser/.local/lib/python3.8/site-packages:/usr/lib/python3.8:/usr/local/mpi/meep/latest/lib/python3.8/site-packages:/usr/local/lib/python3.8/dist-packages"
export PATH=/home/fraser/projects/mpi/bin:/usr/local/mpi/meep/latest/bin:/usr/local/mpi/openmpi/base/411/bin:/home/fraser/.local/bin:/usr/local/bin:/usr/bin:/opt/bin:/bin:/sbin为了在3台真实机器和2台虚拟机上运行,Open MPI 4.1.1已经构建了很多次。最后,所有3个Centos 8 Stream安装都一起完美地运行了mpi。两台ubuntu 21机器(一台real,一台vm)能够一起完美地运行mpi。Centos 8机器可以与Ubuntu 21机器对话。由于glibc版本差异,我无法在Ubuntu 21和Centos 8 Stream之间复制mpi安装。
然后转到Meep,它需要“从源代码构建Meep”文档页面中列出的所有库。其中一些无法从Mint 20代码库中获得,必须从源代码构建。创建了构建脚本,以便为每个脚本运行配置,以便记录所使用的选项。
Meep需要特定版本的harminv,fftw3,guile,swig,hdf5。其他库是使用apt从mint20包存储库中安装的。
Meep也被多次构建,因为我的环境是为了正确地从/usr/local以外的位置运行Meep。要使上述环境变量足够接近,需要进行一些修补工作。他们可能需要一些调整,以达到您的目的。
一个中间更新--我能够在CentOS8流上复制我在Mint20 Linux上的成功。我将把所有的工作部分收集到一个git repo中,并记录那些似乎没有人在StackOverflow上发布的小细节,甚至是Github的问题!例如,在swig git克隆中运行自动生成之前导出PY3=1。否则它想要使用python 2!
另一个问题是:例如,将克隆保存为git-meep。然后复制到meep。然后在meep上工作。如果您使用configure/make/make test/make install超过5次,或者没有注意到任何代码或环境更改,请删除meep树。确保在删除之前保存所有环境设置或配置运行脚本。
在运行任何环境设置脚本之前,将git-meep复制到meep并再次运行autogen.sh。然后运行这些脚本,然后运行任何运行configure和/或make的脚本。
我的configure脚本严格运行configure。然后,我手动运行make/make check/make install,以防构建失败。
还有更多奇怪的事情要做,才能让它工作。
当github存储库在线时,将在此处发布。
https://stackoverflow.com/questions/46867259
复制相似问题