繁体   English   中英

包导入创建一个模块,子模块仍然可导入

[英]Package import creates a module, submodules still importable

我一直在研究python包,现在我想把它变成一个小的RPM发行版。 包中包含一些模块,其中一个模块是可执行的。 我可以使用python setup.py bdist_rpm创建RPM-package并将其安装在带有rpm的fedora盒子上。

在这一点上有所需的命令myscript ,它就像一个魅力。 但是当我尝试在ipython导入包时,我遇到了一些奇怪的事情。 我可以做以下事情

from myscript import sdf
import myscript.mol2

两者都完美无缺,但是

import myscript
myscript.sdf

AttributeError: 'module' object has no attribute 'sdf'

我已经使用了一段时间而现在无济于事。 有很多关于进口问题的问题,但我还没有找到答案。

我应该改变什么来使它工作?

当前的文件夹结构是:

myscript/  #project root
  setup.py
  src/
    myscript/
      __init__.py
      functions.py
      sdf.py
      mol2.py
      runner.py
  bin/
    myscript  #symbolic link to src/myscript/runner.py

setup.py是:

from distutils.core import setup
setup(name = 'myscript',
      version = '0.75',
      author ='me',
      requires = ['numpy'], 
      packages = ['myscript'],
      package_dir = {'myscript':'src/myscript'},
      scripts = ['bin/myscript']
      )

__init__.py是:

__all__ = ['functions','sdf','mol2','runner']

这是正常行为。 如果要导入子模块,则必须在模块中导入它们。

# myscript/__init__.py

from . import sdf

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM