Python3模块导入混乱

2024-05-14 17:15:09 发布

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

当我用pip安装python模块(例如mediafile)时,我可以这样导入它:

from mediafile import MediaFile

而且它工作得很好

但是我将它安装到另一个位置(pip install --target="C:/msys64/home/myname/myprogram/tools/mediafile/" mediafile),我只能这样导入它:

from tools import mediafile

而导入MediaFile就是不起作用。(我尝试了from tools.mediafile import MediaFile和其他一些变体,但没有成功)

这是一份报告:

ImportError: cannot import name 'MediaFile' from 'tools.mediafile' (unknown location)

当我尝试使用mediafile.MediaFile时,它会出现以下错误:

AttributeError: module 'tools.mediafile' has no attribute 'MediaFile'

你知道我哪里把语法弄错了吗


Tags: 模块installpipfromimporttargethome报告
1条回答
网友
1楼 · 发布于 2024-05-14 17:15:09

命令pip install target=/path/to/package mypackage将在您指定的目录(即/path/to/package/mypackage)内安装程序包。在您的情况下,它可能位于C:/msys64/home/myname/myprogram/tools/mediafile/mediafile

如果是这种情况,您应该能够使用以下工具导入:

from tools.mediafile.mediafile import MediaFile

但不要这样做-相反,你应该删除它并重新安装

pip install  target="C:/msys64/home/myname/myprogram/tools/" mediafile

那么您应该可以使用

from tools.mediafile import Mediafile

正如您所发现的那样,上述方法的问题在于,软件包只需要使用import dependency就可以导入它们自己的依赖项—它们不知道您的tools目录。要解决此问题,并使您自己的导入更容易,您需要将目录添加到^{}环境变量中。有关如何在Windows中执行此操作,请参见例如^a2}

或者,您可以将其添加到脚本本身中:

import sys
sys.path.append("tools")
from mediafile import MediaFile

但是,设置PYTHONPATH是实现这一点的首选方法

请注意,我假设您如上所述删除并重新安装了mediafile,因此您的目录结构应该是:

tools
├── mediafile.py
├── mutagen
├── ...

相关问题 更多 >

    热门问题