def paint():
os.system('python paint.py')
基本上,使用上面的代码片段,我从另一个代码中运行我需要的代码,paint.py 导入了几个库:
import math
import time
import cv2
import mediapipe as mp
import numpy as np
当我运行 paint.py 代码时,它可以工作,但是当我用第一段代码运行它时,它会抛出一个错误
File "F:\.....\Smart\paint.py", line 4, in <module>
import cv2
ModuleNotFoundError: No module named 'cv2'
尽管我已经安装好了所有东西,但是可能存在什么问题?蟒蛇3.11;赢 10。
探索程序运行的虚拟环境。与您作为用户不同,系统可能正在使用另一个无法访问本地安装的用户库的 Python。
如果我们谈论的是类 Unix 系统,那么一个解决方案可能是创建一个作为独立命令运行的脚本。下面是一个通常如何完成的示例:
mypy这是一个命令行启动脚本。第一行指定应该执行它的 Python 版本的完整路径。我的情况是python 3.12,而系统python版本是2.7。也就是说,如果不对系统和 Python 环境进行额外设置,该命令python -m mypy将返回错误给我。您所做的取决于您正在使用的系统以及 paint.py 脚本的状态。例如:
os.system('paint')(系统本身应该将其视为paint命令)替换有问题的行。在我看来,这不是一个好的选择,因为系统上可以安装 33 个 Python,每个都有自己的一组模块。所有这些都取决于环境变量,
cmd等等sh,等等......原则上,在“重度”虚拟环境中,
conda这通常不会造成问题,因为他们进行了大量虚拟化,直至 C/C++/Fortran 编译器,同时还忘记了cmd/sh和环境变量和搜索路径。但在更轻松的虚拟环境中,或者根本没有虚拟环境,事情就会变得更加复杂。在许多情况下,运行完全相同的 Python 更安全(或更清晰):
因此,启动了完全相同的 Python,它具有完全相同的模块集(好吧,如果
os.environ你不破坏它的话)。