【发布时间】:2018-12-27 03:57:55
【问题描述】:
我正在使用from . import module 语句来做到这一点:将本地模块导入我的脚本。脚本和模块位于同一文件夹中。
# module.py
def foo():
print('Foo!')
# script.py
from . import module
module.foo()
> ImportError: cannot import name 'module'
这应该很简单,只做import module 确实有效,但正如this answer 建议的那样,我将语句修改为前一种形式。
最终目标是有一个包,我可以从中使用东西,而且包内还有可执行脚本,可以导入该包的其他部分。显然,经过几天的搜索和几个问题,我仍然不太了解进口和包装机械。
这些可能是原因:
- 导入语句在 2.7 和 3.x 中不同,我使用的是 3.6,问题是在 2.7 上
- 相对导入在包内是不同的(
__init__.py的文件夹) - 工作目录不同或文件夹不在
sys.path
拥有__init__ 文件至少在 PyCharm 中的新项目中并没有什么不同。此外,工作目录设置为源文件夹,位于path。
我错过了什么吗?或者更确切地说,实现最终目标中描述的功能的正确方法是什么?非常感谢任何帮助!
【问题讨论】:
-
我不认为你可以做相对导入,除非你在一个模块中。您的脚本不是模块。您也许可以将其称为模块
python -m script,但是当您到达该阶段时,您可能没有正确地做事。
标签: python packages python-import