我的Windows7笔记本电脑上安装了蟒蛇包。
我遵循了所有安装步骤,如中所述:
http://www.pyopt.org/install.html#installation
经过一些尝试和错误之后,我可以使用以下命令安装pyopt:
python setup.py install --compiler=mingw32
但是,我仍然不能在..运行最简单的教程示例。
http://www.pyopt.org/tutorial.html
…可能是因为安装中缺少优化器slsqp。运行教程示例时,我收到以下错误消息:
slsqp = pyOpt.SLSQP()
AttributeError: 'module' object has no attribute 'SLSQP'
如何在windows上使用优化器等完全安装pyopt?
最佳答案
我将以:我对我正在做的事知之甚少…
我也被困在这上面很久了。我有一种感觉,这与模块在安装过程中的构建方式有关。我认为pyopt模块都指向fortran和c库,当您运行
python setup.py install --compiler=mingw32
我一直在使用不同的编译器和命令环境(管理员权限、powershell、cygwin等)但没有效果。msvc编译器在某个点上失败。cygwin、mingw32、intelem都在编译,但在运行实际示例时会产生相同的错误。
如果您查看c:\ pathtopython\lib\site packages\pyopt\文件夹,您将看到包含所有模块的文件夹。当您调用import时,您正在导入这些模块…所以输入以下内容(例如…我想:
from pyOpt import pySNOPT
您或多或少地指示导入在文件夹中导航以找到pysnopt并导入它…我想。您会注意到在\pyopt\pysnopt\中有一个文件pysnopt.py。导入时,使用from pyopt import snopt在pyopt中查找snopt.py…但是您会发现(正如python所做的)没有这样的文件可以导入。相反,只有一个pysnopt.py。知道了这一点,我们希望以下措施可以解决问题:
from pyOpt.pySNOPT import pySNOPT
但这也失败了。这一次产生一个导入错误,指出“snopt共享库导入失败”(这是一个相当大的线索,我怀疑)。
如果打开pysnopt.py文件(可以用其他任何解算器的首字母缩略词替换),您将看到python模块熟悉的格式回望您。所有这些文件的第一行如下:
try:
import snopt
except ImportError:
raise ImportError('SNOPT shared library failed to import')
这就是发生故障的地方。“import snopt”行应该加载snopt.dll(snopt.so,snopt.a for linux,unix)。运行setup.py时,如果我使用cygwin环境,它会在每个c:\ pathtocygwindrive\lib\python2.7\site packages\pyopt\pyacronym文件夹中创建dll。这些dll似乎没有放置在与我告诉pycharm要使用的python版本相对应的位置(c:\pathtopython\lib\site packages\pyopt\pyacronym)。在其他环境中,我使用了所有编译器(包括CygWin)(PopeS壳,Visual C++ 2008 64位命令提示符,任何其他命令提示符)。简单地将dll从cygwin pyopt文件夹复制并粘贴到常规python pyopt文件夹中是行不通的。我不知道是否有一种特殊的方式需要导入dll或其他东西。阅读有关构建c扩展并将它们链接到python项目的内容让我头脑发热,而且冗长的方式太快了。
我以为这是我的计算机本地的(因为一个组成员设法使他的安装工作),但当在另一个组成员的计算机上进行安装时,我遇到了完全相同的错误。
有件重要的事要注意…我做的每件事都是在x64架构中进行的(我曾试图帮助但也被困在这里的团队成员也是如此)。这可能是解决这个问题的真正秘诀。也许有太多的障碍需要跨越,pyopt无法处理64位python。这让我说到我的最后一点…我可以想到一些解决办法:
安装32位python,重新启动进程。
安装Spyder IDE(通过Anaconda或其他方式),然后使用以下命令安装Pyopt:
conda install --channel https://conda.anaconda.org/melund pyopt
或
conda install --channel https://conda.anaconda.org/mutirri pyopt
(均适用于x64 Windows)
不要使用默认的conda pyopt(conda install pyopt),因为这是0.84版,无法工作。
切换到Linux(因为使用Linux编程就像使用Lube和Anal…你可以不用它…但一切都会更加痛苦)
这些是我到目前为止找到的解决办法。我希望有人尽快发布一个实际的解决方案!