我正在为一些脚本构建一个简单的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)?
这是您在运行程序的方式与设置导入方式之间的不匹配。设置导入时就好像涉及到一个程序包一样,但是就像没有程序包一样运行程序。
运行程序的方式,内部pycli
文件夹的内容都是顶级模块,并且没有pycli
包。要将程序作为程序包子模块运行,您需要从pycli
可导入程序包的位置进行操作(实际上,该程序将位于外部pycli
文件夹中,但是如果您安装了程序包,则可以位于任何位置),并且需要运行
python -m pycli.cli
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句