首页 > 解决方案 > Python 找不到模块,即使在路径更新和为子目录创建空白 __init__.py 文件之后

问题描述

我已经在虚拟环境(/home/jamesmcintyre/.local/pipx/venvs/opencv-python)中安装了 OpenCV,并且我已将 '/home/jamesmcintyre/.local/pipx/venvs' 添加到我的 sys.path 中,如此处所述

我还创建了一个__init__.py在 OpenCV-python 的相关子目录中调用的空文本文件,但import cv2仍然无法正常工作。

谁能告诉我为什么这不起作用以及如何让模块从非常规目录/子目录中加载?

操作系统:Pop20.04(兼容 Ubuntu 的 Linux)

标签: pythonpython-3.xlinuxopencvubuntu

解决方案


尽管我不确定它是否是最好的,但我已经找到了解决我自己问题的方法。

您可以在导入之前更改工作目录,然后再切换回来,而不是更新路径。

这是执行此操作的代码:

def PipxImport(ImportName,*InstallName):
import os

CL = os.getcwd()

FolderName = ImportName

i = 0    
for arg in InstallName:
    if i == 0:
        FolderName = arg
    else:
        break
    i = i + 1

if os.name == 'nt':
    os.chdir(os.path.expanduser("~") + '\\.local\\pipx\\venvs\\' + FolderName + '\\Lib\\site-packages') 
else:
    os.chdir(os.path.expanduser("~") + '/.local/pipx/venvs/' + FolderName + '/lib64/python3.8/site-packages') 

ImportName = __import__(ImportName)

os.chdir(CL)

return ImportName

我还为它创建了一个 repo,它比上面的更可能是最新的,并且还解释了如何使用它等。

https://github.com/FunckyFizz/PipxImport


推荐阅读