包导入创建一个模块,子模块仍然可导入
Package import creates a module, submodules still importable
我一直在开发一个 python 包,现在我想把它变成一个小的 RPM 发行版。软件包包括几个模块,其中一个是可执行的。我可以用 python setup.py bdist_rpm
创建 RPM 包并用 rpm
.
将它安装在软呢帽盒子上
此时有了所需的命令 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']
This is normal behavior. 如果要导入子模块,则必须在模块中导入它们。
# myscript/__init__.py
from . import sdf
我一直在开发一个 python 包,现在我想把它变成一个小的 RPM 发行版。软件包包括几个模块,其中一个是可执行的。我可以用 python setup.py bdist_rpm
创建 RPM 包并用 rpm
.
此时有了所需的命令 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']
This is normal behavior. 如果要导入子模块,则必须在模块中导入它们。
# myscript/__init__.py
from . import sdf