gpt4 book ai didi

python - 如何创建带有内置 "test/main.py"main 函数的 python 包?

转载 作者:太空宇宙 更新时间:2023-11-03 19:37:02 34 4
gpt4 key购买 nike

所需的目录树:

Fibo
|-- src
| `-- Fibo.py
`-- test
`-- main.py

我想要的是在 cd'ing 到 test 后调用 python main.py 并执行 main.py 将运行该包的所有单元测试。

目前如果我这样做:

import Fibo

def main():
Fibo.fib(100)

if __name__ == "__main__":
main()

我收到错误:“ImportError:没有名为 Fibo 的模块”。

但如果我这样做:

import sys

def main():
sys.path.append("/home/tsmith/svn/usefuldsp/trunk/Labs/Fibo/src")
import Fibo
Fibo.fib(100)

if __name__ == "__main__":
main()

这似乎解决了我的错误。我可以继续...但这不是一个 python 包。这更像是一种“文件集合”方法。

您将如何设置测试以在此目录结构中工作?

最佳答案

如果我想导入一个位于我正在评估的文件的固定相对位置的模块,我通常会这样做:

try:
import Fibo
except ImportError:
import sys
from os.path import join, abspath, dirname
parentpath = abspath(join(dirname(__file__), '..'))
srcpath = join(parentpath, 'src')
sys.path.append(srcpath)
import Fibo

def main():
Fibo.fib(100)

if __name__ == "__main__":
main()

如果您想成为一名优秀的命名空间公民,您可以在 except block 末尾删除不再需要的符号。

关于python - 如何创建带有内置 "test/main.py"main 函数的 python 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3079670/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com