当我用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'知道我哪里错语法了吗?
发布于 2021-07-12 11:26:11
命令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目录。要解决这个问题,并使您自己的导入更容易,您需要将目录添加到您的PYTHONPATH环境变量中。有关如何在Windows中执行此操作,请参见例如this question。
或者,您可以将它添加到脚本本身中:
import sys
sys.path.append("tools")
from mediafile import MediaFile然而,设置PYTHONPATH是进行此操作的首选方法。
请注意,我假设您删除并重新安装了上面的mediafile,所以您的目录结构应该是:
tools
├── mediafile.py
├── mutagen
├── ...https://stackoverflow.com/questions/68345992
复制相似问题