服务系统:CentOS7.9
Python环境:Python3.8.6
项目背景:收银台自动化脚本
我在CentOS7 中创建了一个虚拟环境,自动化交是可以正常执行的。但是当我打算用crontab做定时任务的时候,一直报错。脚本里面用到的这个Browsermob-Proxy是一个代理,可以理解为抓包用的。
ImportError while loading conftest '/home/lawrence/workcode/Auto_Cashierx/conftest.py'.conftest.py:7: in <module> from common.proxy_manager import ProxyManagercommon/proxy_manager.py:51: in <module> ProxyManager()common/proxy_manager.py:26: in __init__ self.server.start()venv/lib/python3.8/site-packages/browsermobproxy/server.py:127: in start raise ProxyServerError("Can't connect to Browsermob-Proxy")E browsermobproxy.exceptions.ProxyServerError: Can't connect to Browsermob-Proxy/bin/sh: allure: 未找到命令/bin/sh: allure: 未找到命令Traceback (most recent call last): File "run_case.py", line 88, in <module> get_result() File "run_case.py", line 39, in get_result with open("report.json", "r", encoding="utf-8") as f:FileNotFoundError: [Errno 2] No such file or directory: 'report.json'
(PS: ‘allure: 未找到命令’ ,从这往下都不影响程序执行)
我试过很多种办法,包括直接在crontab里面定义
0 8,15,21 * * * source /home/lawrence/workcode/Auto_Cashier/venv/bin/activate && /home/lawrence/workcode/Auto_Cashier/venv/bin/python3 /home/lawrence/workcode/Auto_Cashier/run_case.py
或者是在sh脚本里面编写
#!/bin/bashcd /home/lawrence/workcode/Auto_Cashierx/venv/source ./bin/activatecd /home/lawrence/workcode/Auto_Cashierxvenv/bin/python run_case.pydeactivate >> /tmp/cron_output.log 2>&1
但最终都会报上面的错误。我直接把crontab里面的内容复制出来,是可以正常执行的。找了一天,没找到解决办法。请求各位的帮助。
crontab默认的工作路径是用户的家目录。你的程序 open("report.json", "r", encoding="utf-8")
这里读取的是一个相对目录下的文件,所以会报找不到文件。
读取 report.json 变成了读取 /用户目录/report.json 这个文件了。
所以可以改成这样子:
0 8,15,21 * * * cd /home/lawrence/workcode/Auto_Cashier && ./venv/bin/python3 run_case.py
你把运行步骤放在sh脚本里面执行,这个看上去是没问题的。
这个问题似乎与在 CentOS 7.9 的 Python 虚拟环境中执行定时任务有关,并且涉及到 crontab。错误日志显示,程序在尝试启动 Browsermob-Proxy 时出错,并且找不到 'allure' 命令。此外,还有一个文件 'report.json' 找不到的问题。
下面是一些可能的解决方案:
ProxyManager()
在尝试启动 Browsermob-Proxy 时出错。请确保 Browsermob-Proxy 正在运行,或者检查其配置是否正确。pip install allure-pytest
。0 8,15,21 * * * source /home/lawrence/workcode/Auto_Cashier/venv/bin/activate && /home/lawrence/workcode/Auto_Cashier/venv/bin/python3 /home/lawrence/workcode/Auto_Cashier/run_case.py 2>> /tmp/cron_error.log
。希望这些建议能帮助你解决问题!
这份教程是帮助你安装和使用 Python 的包 本指南会告诉你如何安装和使用必要的工具。值得注意的是 Python 可以做许多许多的事情,至于你如何去安装和管理你的依赖可能会根据你项目的不同而不同。这份指南更多是开发和部署网络服务(包括 web 应用),但是这份指南同样适用于帮助你管理任何项目的开发和测试环境。 注意:这份指南是在 Python 3 版本下完成的,如果你由于不可抗拒的原因仍然在使用
python 的虚拟环境可以为一个 python 项目提供独立的解释环境、依赖包等资源,既能够很好的隔离不同项目使用不同 python 版本带来的冲突,而且还能方便项目的发布。 virtualenv virtualenv可用于创建独立的 Python 环境,它会创建一个包含项目所必须要的执行文件。 安装 virtualenv $ pip install virtualenv 配置 pip 安装第
在视窗和蟒蛇 3.9x 中运行 VS 代码 我创建了一个新的项目文件夹,并为此项目创建了一个新的虚拟环境。我创建的第一个脚本是一个 .ipynb 文件(jupyter 笔记本),它工作正常。当我将脚本导出到.py文件时,它在第一行代码上生成错误: < code >从pynput导入键盘 模块未发现错误: 没有名为“pynput”的模块 pynput库安装在这个虚拟环境中,这就是. ipynb文件运
我主要用python编程,并且有一些虚拟环境方面的经验。我是新的软件,并开始寻找docker来运行我的代码。我想了解它的功能和工作原理。 据我所知,docker容器就像虚拟环境,在执行时运行一组指令,可以将其中包含的所有内容视为一个实体(因此它或其他内容不会相互制约?)。当我读到更多关于容器的内容时,它们听起来非常完美,可以消除对虚拟环境的任何需求,但仍然不确定。如果能澄清一下,我将不胜感激,因为
问题内容: 从代码移动到新机器(可能运行不同的OS)相对简单并且给出相同结果的意义上来说,主要的工作之一就是确保代码的可移植性。 来自Python背景,我习惯了虚拟环境的概念。与所需软件包的简单列表一起使用时,这可以确保安装的软件包和库在任何计算机上都可用,而不会引起太多麻烦。当然,这不能保证- 不同的操作系统都有自己的缺点和特点-但这可以为您提供95%的解决方案。 R中是否存在这样的东西?即使它
我一直在使用Spyder安装的Anaconda发行版,默认使用Python 2.7。目前我需要用Python 3.4设置一个开发虚拟环境。 在线调查后的两大建议是: 首先设置虚拟环境,并指向更改Spyder的首选项,例如这里; 在虚拟环境中安装所有Spyder依赖项,如PyQt4,例如这里; 这两项建议都很繁琐,看起来不像是明智的发展选择。 是否有一个解决方案,将允许运行Spyder所需的Pyth