当前位置: 首页 > 知识库问答 >
问题:

导入后python模块为空

廉展鹏
2023-03-14

我注意到一些看似奇怪的行为,当试图以不同的方式导入名为rmod2的python模块时。如果我从rmod2.py文件所在的目录启动python,它可以正常工作。但是,如果我将文件移动到其他模块所在的另一个文件夹,它不再按预期工作。模块/包文件夹 /usr/lib/pymodules/python2.7,它也包含在sys.path.中,所以我创建了文件夹 /usr/lib/pymodules/python2.7/rmod2并将一个空__init__. py和rmod2.py放在其中。

>>> import rmod2
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
ImportError: No module named rmod2

用__init__。py文件,导入看起来可以,但是包是空的:

>>> import rmod2
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'rmod2']
>>> dir(rmod2)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
>>> rmod2.__path__
['/usr/lib/pymodules/python2.7/rmod2']
>>> rmod2.__file__
'/usr/lib/pymodules/python2.7/rmod2/__init__.py'

有人能告诉我这是怎么回事吗,如何修复才能在导入时实际加载模块内容?

共有2个答案

洪楚
2023-03-14

有一次我发现包的模块不能从包中访问,但是当直接导入时,它可以工作。可能在包的__init__. py中缺少__all__

这没有工作:

这奏效了:

import mypkg.mymodule
obj = mypkg.mymodule.MyClass()
云承弼
2023-03-14

您希望将模块所在的目录的路径添加sys.path 变量中,或者将 rmod.py 模块直接添加到路径上的目录(而不是子目录中)。

通过将__init__.py添加到目录中,您可以将其转换为python包,使其成为可导入的。如果这是您的意图,那么您将 rmod 模块移动到 rmod 包中,并且可以通过该命名空间导入该模块:

from rmod2 import rmod2
 类似资料:
  • 主要内容:import 模块名 as 别名,from  模块名 import 成员名 as 别名使Python 进行编程时,有些功能没必须自己实现,可以借助 Python 现有的标准库或者其他人提供的第三方库。比如说,在前面章节中,我们使用了一些数学函数,例如余弦函数 cos()、绝对值函数 fabs() 等,它们位于 Python 标准库中的 math(或 cmath)模块中,只需要将此模块导入到当前程序,就可以直接拿来用。 前面章节中,已经看到使用 import 导入模块的语法,但实际上

  • 我需要在Python中导入一个名为array_queue的模块。我检查了一下,如果我不使用它,就会出现一个提示:“array_queue imported but unused”。但是,如果我使用它并运行该程序,则会出现以下情况: ModuleNotFounderRror:没有名为“array_queue”的模块

  • 3.3 Python模块导入 与C++类似的,在Python中导入其他模块时,也需要相关处理。 需求:首先新建一个Python文件A,再创建Python文件UseA,在UseA中导入A并调用A的实现。 实现: 新建两个Python文件,使用 import 实现导入关系; 添加可执行权限、编辑配置文件并执行UseA。 1.新建两个Python文件并使用import导入 文件A实现(包含一个变量):

  • 问题内容: 我已尝试找到有关最佳使用还是全面的指南。我刚开始使用Python,并且正在尝试着眼于最佳实践。 基本上,我希望有人能分享他们的经验,其他开发人员有什么喜好,以及避免遇到麻烦的最佳方法是什么? 问题答案: 和之间的区别主要是主观的。选择最喜欢的一个,并在使用中保持一致。这里有一些要点可以帮助你做出决定。 优点: - 减少维护你的import报表。无需添加任何其他导入即可开始使用模块中的另

  • 根据这个答案,您可以使用来使用类似这样的相对导入: 为什么相对导入不适用于sklearn。特征提取。文本 我验证了是一个具有以下功能的模块: 编辑 “不工作”,我的意思是它不导入模块。 我正在使用Python 3.4 绝对方式工作: 相对方式不:

  • 我有一个这样的目录: 我可以这样导入父模块: 那么,既然我已经有了父模块,那么获取子模块的最佳方法是什么?我已经尝试了,,等。 有什么建议吗? 谢谢