虚拟环境中的Python脚本未在命令行中运行

2024-04-26 17:18:27 发布

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

一旦虚拟环境被激活((venv) pi@raspberrypi:~/test $ python3 openCV_motion_detection_cam1.py ),使用cv2的python脚本就可以从命令行正常运行。但是当从普通命令行(pi@raspberrypi:~/test $ python3 openCV_motion_detection_cam1.py )运行时,它会输出错误——“没有名为‘cv2’的模块”,它已经在/home/pi/test/venv/lib/python3.7/site包中。我是个新手,希望您的评论对Noob友好。请帮忙


Tags: 命令行pytest脚本venv错误虚拟环境pi
2条回答

虚拟环境的存在是为了将各个python程序所需的模块彼此隔离开来。安装cv2时,您将其安装在当前活动的venv中。当venv未激活时,其模块将不可用。简单的解决方案是在venv中运行程序

您可以通过模块路径的/venv/lib/python37/site-packages部分判断模块是否存在于venv中

如果要在虚拟环境中直接运行脚本,请编辑shebang行以包含该环境中的Python解释器:

#!/path/to/env/bin/python3

该解释器将在其父目录中找到pyvenv.cfg文件,并相应地调整所有路径。这相当于激活Environment


这个过程可以自动化。使用setup.py创建一个包,并声明哪些文件是脚本。安装包后,脚本将安装在<venv>/bin子目录中,并带有正确的shebang行

您可能希望从/usr/bin创建一个符号链接,以使脚本位于路径中

相关问题 更多 >