从python3中的文件中导入函数的正确方法

一月

我正在为一些脚本构建一个简单的python3 CLI。我在导入位于相同模块中文件中的自己的函数时遇到麻烦。

我的文件结构是

pycli/
├── README.md
├── pycli
  ├── __init__.py
  ├── cli.py
  └── funcmodule.py

funcmodule.py

def my_function(word):
    print("Hello %s" % word)

cli.py

#!/usr/bin/env python3

from pycli.funcmodule import my_function


def main():
    my_function('hello world')


if __name__ == '__main__':
    main()

当我从命令行运行时./pycli/cli.py,我得到

(venv) ➜  ./pycli/cli.py 
Traceback (most recent call last):
  File "./pycli/cli.py", line 3, in <module>
    from pycli.funcmodule import my_function
ModuleNotFoundError: No module named 'pycli'

当我cli.py从PyCharm或Visual Studio Code中运行时,它可以正常工作。用python3 +导入函数的正确方法是什么(我不在乎python2)?

user2357112支持Monica

这是您在运行程序的方式与设置导入方式之间的不匹配。设置导入时就好像涉及到一个程序包一样,但是就像没有程序包一样运行程序。

运行程序的方式,内部pycli文件夹的内容都是顶级模块,并且没有pycli包。要将程序作为程序包子模块运行,您需要从pycli可导入程序包的位置进行操作(实际上,程序将位于外部pycli文件夹中,但是如果您安装了程序包,则可以位于任何位置),并且需要运行

python -m pycli.cli

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章