抱歉,我觉得这是一块破旧的领域,但我看上去很努力,而且仍在导入我编写的python模块方面仍处于挣扎中。更具体地说,如果直接导入,则只能引用模块。为了与其他软件包兼容,我需要使用python-2.7。
例如,对于软件包brcfiles。
brcfiles的文件结构:
brcfiles/
LICENSE
README.md
setup.py
brcfiles/
__init__.py
files.py
samples.py
init .py的内容:
$ cat /path_to_pkg/brcfiles/brcfiles/__init__.py
__all__ = ['files', 'samples']
我的.bash_profile包含以下行(我尚未pip安装brcfiles,但仍在开发中):
export PYTHONPATH=$PYTHONPATH:/path_to_pkg/brcfiles
如果我分别加载模块,则可以实现所需的行为,并且可以访问模块内容。
>>> import brcfiles.files
>>> brcfiles.files
<module 'brcfiles.files' from '/path_to_pkg/packages/brcfiles/brcfiles/files.pyc'>
但是,如果导入整个程序包,则无法引用单个模块。
>>> import brcfiles
>>> brcfiles.files
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'files'
FWIW,以下工作有效,但我不喜欢此方法创建的名称空间问题。
>>> from brcfiles import *
>>> files
<module 'brcfiles.files' from '/path_to_pkg/packages/brcfiles/brcfiles/files.pyc'>
上面的解决方案暂时可以使用,但是我觉得这个问题是我做错事情的征兆。这很可能是我未来许多生物信息学管道的基石,因此我希望正确完成它。显然,我对创建python软件包不是很陌生,所以衷心感谢那些花时间提供帮助的人!
我认为您误解了import命令的语法。
import brcfiles.files
从包brcfiles导入模块“文件”:从包brcfiles
import brcfiles
导入包(即,包init .py中的代码)from brcfiles import *
:从包brcfiles导入所有模块(文件,示例)。
您不能先导入brcfiles,然后再导入brcfiles.files。因为该语句仅导入brcfiles(_ init),而不导入brcfiles中的其他模块。
当您执行brcfiles.files时,它开始在brcfiles的初始化中寻找方法或属性'files',因此出现上述错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句