Python路径说明:从子包导入

阿斯特

这个问题详细说明了我无法向自己解释的行为。

src/package/__init__.py 是空的但存在。

src/package/subpackage/__init__.py

pink = 'It works'

src/package/test/test.py

import package.subpackage as subpackage
# I also tried `import package.subpackage as subpackage

print subpackage.pink

呼叫来自srcpython package/test/test.py失败ImportError: No module named subpackage请注意,这import package也不起作用。

注意:(从中运行解释器src并键入import语句效果很好。

我应该了解我不应该调用程序包的子文件吗?在我的项目中,它是一个测试文件,因此在这里存放对我来说听起来很合逻辑。

为什么当前工作目录不在导入路径中?

非常感谢那些阅读和回答的人。

阿夫古里翁

因为您的软件包不在$ PYTHONPATH中。如果要调用test.py,则可以将test.py文件移动到src /目录,或将src添加到$ PYTHONPATH

PYTHONPATH="/path/to/src:$PYTHONPATH"
export PYTHONPATH

来自文档

导入名为spam的模块时,解释器首先搜索具有该名称的内置模块。如果找不到,它将在变量sys.path给出的目录列表中搜索名为spam.py的文件。

>>> import sys
>>> sys.path

输出是这样的

['.', '/usr/bin', ...

这意味着当前目录也位于sys.path中。如果要导入模块,请通过将软件包目录添加到环境变量PYTHONPATH或将当前目录或脚本目录更改为软件包目录来确保模块路径在sys.path中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档