copage.py Python模块-运行Scrip时导入错误

2024-05-19 00:21:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难让Python的“coverage”模块正常工作。

我没有修改或添加到Python目录的权限,因此无法安装easy_install to setup coverage。 通过将coverage目录添加到python路径来解决这个问题。 Coverage工作正常,输入covereage --version到shell输出版本。coverage help显示所有可用的命令。一切看起来都很好。 我可以在简单的小脚本上运行覆盖。

但是,当在5个模块(一个已测试为工作的脚本)上运行带有大量导入的大型脚本时,当使用coverage run [normal commands]运行命令时,脚本将执行并失败,因为找不到某些模块。

这里有个故障-

无覆盖的命令行(正常工作):

我通过运行./script_name.py arg1 arg2 arg3调用脚本

当我尝试通过输入:python script_name.py arg1 arg2 arg3运行脚本时,脚本失败,无法导入模块:

    Error message:
        ImportError: No module named cx_Oracle

具有覆盖范围的命令行:

coverage run ./script_name.py arg1 arg2 arg3

    "No file to run: 'main.py'"

coverage run {[full_path_to_module_name}./script_name.py arg1 arg2 arg3

    Now we are getting somewhere. Coverage is clearly invoked and working, put I get that import error:

Error message:
    ImportError: No module named cx_Oracle

Tags: 模块tonorunnamepy目录脚本
3条回答

我想我也遇到过类似的问题,通过这样的报道解决了这个问题:

python -m coverage run [normal commands]

特别是在我的情况下

python -m coverage run -m unittest discover

显然,这是一个使用不同python安装的覆盖情况,因为我的模块被报告丢失,但它只安装在我的虚拟env中,而不是在我的全局env中。

好消息是,显式地使用“python”运行,并使用coverage.py生成相同的结果。坏消息是,结果是一条错误消息。

似乎有多个Python安装。一个由“../script\u name.py”找到,另一个由“python./script\u name.py”找到。

要诊断此问题,请将这些行添加到script_name.py的顶部:

import sys
print sys.executable
print "\n".join(sys.path)

这将显示正在调用的Python可执行文件,以及模块的搜索路径。以两种方式运行脚本将显示不同的结果,您应该能够了解发生了什么。

我会补充我的经验,因为有人可能会犯同样的错误。

我在一个没有安装覆盖率的python虚拟环境(venv)中运行覆盖率。执行覆盖我实际上是调用全球安装的覆盖。

使用pip3 install coverage在本地安装解决了这个问题,现在使用python3 -m coverage run myfile.py

相关问题 更多 >

    热门问题