gpt4 book ai didi

Python - 导入包失败

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:41 25 4
gpt4 key购买 nike

我在导入包时遇到问题。我的文件结构是这样的:

filelib/  
__init__.py
converters/
__init__.py
cmp2locus.py
modelmaker/
__init__.py
command_file.py

在模块 command_file.py 中,我有一个名为 CommandFile 的类,我想在 cmp2locus.py 模块中调用它。

我在cmp2locus.py模块中尝试了以下操作:

import filelib.modelmaker.command_file
import modelmaker.command_file
from filelib.modelmaker.command_file import CommandFile

所有这些选项都会返回ImportError:没有名为...的模块感谢任何有关解决此问题的提示。我不明白为什么这个导入不起作用。

最佳答案

要执行这些导入,您有 3 个选项,我将按照我喜欢的顺序列出它们。 (对于所有这些选项,我将假设 python 3)

相对导入

您的文件结构看起来像一个正确的包文件结构,因此这应该可以工作,但是尝试此选项的其他人应该注意,它要求您位于包中;这对于某些随机脚本不起作用。

您还需要运行从包外部进行导入的脚本,例如导入并从那里运行它,而不是直接运行 cmp2locus.py 脚本

然后您需要使用 .. 将导入更改为相对导入所以:

import filelib.modelmaker.command_file

变成了

from ..modelmaker import command_file

.. 指的是父文件夹(如文件系统中的隐藏文件)。另请注意,您必须使用 from import 语法,因为以 .. 开头的名称在 python 中不是有效标识符。不过,您当然可以使用 from import as 将其导入为您想要的任何内容。

另请参阅the PEP

绝对导入

如果您将包裹放在 site-packages (由 site.getsitepackages() 返回的目录)您将能够使用您在问题中尝试使用的导入格式。请注意,这需要您的软件包的任何用户也将其安装在那里,因此这并不理想(尽管他们可能会这样做,但依赖它是不好的)。

修改python路径

Meera回答你也可以直接使用sys修改python路径。

我个人不喜欢这个选项,因为它感觉非常“hacky”,但我听说它很有用,因为它可以让您精确控制可以导入的内容。

关于Python - 导入包失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42853617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com