首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python“没有模块名为_glmnet”

Python“没有模块名为_glmnet”
EN

Stack Overflow用户
提问于 2013-12-08 21:32:54
回答 2查看 3.3K关注 0票数 2

更新越来越近。现在,我在应该生成f2py模块的.pyf文件上运行_glmnet

我使用以下命令构建包python-glmnet包。

代码语言:javascript
复制
python setup.py config_fc --fcompiler=gnu95         
                                           --f77flags='-fdefault-real-8'         
                                          --f90flags='-fdefault-real-8' build

但是,当我导入模块时,我会得到以下错误:

文件"/Users/rose/221/tagger/tagger/glmnet/glmnet.py",第2行,在导入_glmnet ImportError:没有模块名为_glmnet

如何导入该模块?

glmnet目录还包含一个以以下内容开头的glmnet.pyf文件:

代码语言:javascript
复制
!    -*- f90 -*-
! Note: the context of this file is case sensitive.

python module _glmnet ! in
    interface  ! in :_glmnet
        subroutine elnet(ka,parm,no,ni,x,y,w,jd,vp,ne,nx,nlam,flmin,ulam,thr,isd,lmu,a0,ca,ia,nin,rsq,alm,nlp,jerr) ! in :glmnet:glmnet.f
            integer optional :: ka=1 ! Use covariance updates over naive by default
            real*8 :: parm
            integer intent(hide),check(shape(x,0)==no),depend(x) :: no=shape(x,0)
            integer intent(hide),check(shape(x,1)==ni),depend(x) :: ni=shape(x,1)
            real*8 dimension(no,ni) :: x
            real*8 dimension(no),depend(no) :: y
            real*8 dimension(no),depend(no) :: w
            integer dimension(*) :: jd
            real*8 dimension(ni),depend(ni) :: vp
            integer optional,depend(x) :: ne=min(shape(x,1), nx)
            integer :: nx
            integer optional,check((flmin < 1.0 || len(ulam)==nlam)),depend(flmin,ulam) :: nlam=len(ulam)
            real*8 :: flmin
            real*8 dimension(nlam) :: ulam
            real*8 :: thr
            integer optional :: isd=1 ! Standardize predictors by default

更新

在哪里可以找到这个_glmnet模块?它是否包含在glmnet.pyf文件中,如下所示?我尝试将这个glment文件夹添加到我的PYTHONPATH中,但是这并没有改变任何事情。

代码语言:javascript
复制
~/221/tagger/tagger/glmnet master ls
__init__.py                  example_lasso_elastic_net.py glmnet.pyc
__init__.pyc                 glmnet.f                     glmnet.pyf
elastic_net.py               glmnet.py
~/221/tagger/tagger/glmnet master head -10 glmnet.pyf
!    -*- f90 -*-
! Note: the context of this file is case sensitive.

python module _glmnet ! in
    interface  ! in :_glmnet
        subroutine elnet(ka,parm,no,ni,x,y,w,jd,vp,ne,nx,nlam,flmin,ulam,thr,isd,lmu,a0,ca,ia,nin,rsq,alm,nlp,jerr) ! in :glmnet:glmnet.f
            integer optional :: ka=1 ! Use covariance updates over naive by default
            real*8 :: parm
            integer intent(hide),check(shape(x,0)==no),depend(x) :: no=shape(x,0)
            integer intent(hide),check(shape(x,1)==ni),depend(x) :: ni=shape(x,1)
~/221/tagger/tagger/glmnet master echo $PYTHONPATH
/Users/rose/221/tagger/tagger/glmnet:
~/221/tagger/tagger/glmnet master cd ..
~/221/tagger/tagger master python main.py
Traceback (most recent call last):
  File "main.py", line 14, in <module>
    from glmnet import glmnet
  File "/Users/rose/221/tagger/tagger/glmnet/glmnet.py", line 2, in <module>
    import _glmnet
ImportError: No module named _glmnet
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-10 23:49:30

据我所知,从源代码中可以看出,它正在查找_gmlnet模块,该模块是在gmlnet.pyf中定义的。gmlnet.pyf不是python模块,它是一个名为f2py的程序的附加指令集,python将忽略.pyf文件。您需要使用.pyf编译f2py文件和fortran文件。使用这样的命令:

代码语言:javascript
复制
f2py -c --fcompiler=gnu95 gmlnet.pyf gmlnet.f

尝试安装f2py,然后重新安装gmlnet包。

票数 2
EN

Stack Overflow用户

发布于 2013-12-10 22:42:06

在不太了解其他发生的事情的情况下,这看起来好像python不知道_gmlnet包的位置。如果还没有,请使用PYTHONPATH检查echo $PYTHONPATH环境变量的内容。如果_gmlnet目录不在那里,则需要添加它。

  • 若要在PYTHONPATH中添加bash内容,请运行以下命令: export PYTHONPATH=/path/to/_gmlnet/directory:$PYTHONPATH
  • 您可以通过进入交互式终端并键入 import sys print sys.path
  • 最后,您可能不希望每次启动终端时都将其输入shell中。对于Mac,如果使用~/.bash_profile,请将以下内容添加到您的bash文件的末尾。确保此文件以换行符结尾。 export PYTHONPATH=/path/to/_gmlnet/directory:$PYTHONPATH
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20459390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档