鱼C论坛

 找回密码
 立即注册
查看: 6548|回复: 11

Python,__init__.py调用扩展model失败

[复制链接]
发表于 2017-2-28 10:49:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.调用目录为:dir/dadi/
dadi目录下包括:
__init__.py        Demographics1D.py
__init__.py源码:
  1. """
  2. For examples of dadi's usage, see the examples directory in the source
  3. distribution.

  4. Documentation of all methods can be found in doc/api/index.html of the source
  5. distribution.
  6. """
  7. import logging
  8. logging.basicConfig()

  9. import Demographics1D
  10. import Demographics2D
  11. import Godambe
  12. import Inference
  13. import Integration
  14. import Misc
  15. import Numerics
  16. import PhiManip

  17. # import the triallele modules - numerics, integration, demographics
  18. try:
  19.     import Triallele.numerics, Triallele.integration, Triallele.demographics
  20. except ImportError:
  21.     pass

  22. # Protect import of Plotting in case matplotlib not installed.
  23. try:
  24.     import Plotting
  25. except ImportError:
  26.     pass

  27. # We do it this way so it's easier to reload.
  28. import Spectrum_mod
  29. Spectrum = Spectrum_mod.Spectrum

  30. # When doing arithmetic with Spectrum objects (which are masked arrays), we
  31. # often have masked values which generate annoying arithmetic warnings. Here
  32. # we tell numpy to ignore such warnings. This puts greater onus on the user to
  33. # check results, but for our use case I think it's the better default.
  34. import numpy
  35. numpy.seterr(all='ignore')
复制代码

运行命令 python3 -c "import dadi"
报错信息:
  1. File "dir/dadi/__init__.py", line 11, in <module>
  2.     import Demographics1D
  3. ModuleNotFoundError: No module named 'Demographics1D'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-2-28 13:32:22 | 显示全部楼层
模块默认是从Lib文件下搜索。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-28 13:40:39 | 显示全部楼层
lubcat 发表于 2017-2-28 13:32
模块默认是从Lib文件下搜索。

lib目录下已经有dadi的文件了,这个就是lib目录下dadi目录下的__init__.py
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-28 14:12:52 | 显示全部楼层
搜索路径里大概没有你新添的这个路径,
如果这个Demographics1D模块本身没问题的话。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-28 14:21:04 | 显示全部楼层
lubcat 发表于 2017-2-28 14:12
搜索路径里大概没有你新添的这个路径,
如果这个Demographics1D模块本身没问题的话。

我查了一下__init__.py,这个用法应该没有问题,在lib目录下新建model的文件夹里只要有__init__.py,并在这个脚本中import该目录下的model,就可以直接在其他目录下调用该目录下的model,这一点应该是没有问题的
但是就像要加coding=‘uft-8’才能输入中文一样,我猜是不是少了什么才会import不到
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-28 14:37:14 | 显示全部楼层
  1. from _collections_abc import *
  2. import _collections_abc
复制代码


找了个系统的包看了下,
collections是个包,包含abc.py 和__init_
他的导入方式是上面这样的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-28 15:23:14 | 显示全部楼层
lubcat 发表于 2017-2-28 14:37
找了个系统的包看了下,
collections是个包,包含abc.py 和__init_
他的导入方式是上面这样的。

好像还是不对
  1. jojodeMacBook-Air:fs_from_data jojo$ head -15 dir/dadi/__init__.py
  2. """
  3. For examples of dadi's usage, see the examples directory in the source
  4. distribution.

  5. Documentation of all methods can be found in doc/api/index.html of the source
  6. distribution.
  7. """
  8. import logging
  9. logging.basicConfig()

  10. from Demographics1D import *
  11. import Demographics1D
  12. import Demographics2D
  13. import Godambe
  14. import Inference
  15. jojodeMacBook-Air:fs_from_data jojo$ python3 fs_from_data.py
  16. Traceback (most recent call last):
  17.   File "fs_from_data.py", line 4, in <module>
  18.     import dadi
  19.   File "dir/dadi/__init__.py", line 11, in <module>
  20.     from Demographics1D import *
  21. ModuleNotFoundError: No module named 'Demographics1D'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-28 15:37:23 | 显示全部楼层

dadi这个包,不是包含Demographics1D和__init__两个文件
参照系统自带包的导入方式
我认为是
  1. from  _dadi_Demographics1D import *
  2. import  _dadi_Demographics1D
复制代码


好吧。这样也不可以,就不知道啦=。=
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-28 15:40:08 | 显示全部楼层
lubcat 发表于 2017-2-28 15:37
dadi这个包,不是包含Demographics1D和__init__两个文件
参照系统自带包的导入方式
我认为是

谢谢帮忙qwq,确实不可以……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-28 16:01:28 | 显示全部楼层
Luse 发表于 2017-2-28 15:40
谢谢帮忙qwq,确实不可以……


还是图样图森破了……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-28 20:31:06 | 显示全部楼层
lubcat 发表于 2017-2-28 16:01
还是图样图森破了……

不知道和python版本有没有问题,我换python2就搞定了……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-28 22:46:54 | 显示全部楼层
Luse 发表于 2017-2-28 20:31
不知道和python版本有没有问题,我换python2就搞定了……


神奇了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-4 09:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表