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

来自的ImportError。在简单的python文件上导入x

范麒
2023-03-14

我想将一些代码从python 2移植到python 3,但由于导入错误而失败。因此,我试图通过创建2个基本的python文件来测试来摆脱移植本身并专注于导入。但是,我甚至无法让它们起作用。

所以我有2个文件

test.py:

print('Test works')

和test2.py:

from . import test

然而,结果是Py魅力中的这个错误:

ImportError:无法从“__main__”(C:/Users/Username/test2.py)导入名称“test”

在Ubuntu Shell中:

Traceback(最近一次调用last):文件“test2.py”,第1行,from。导入test1系统错误:父模块“”未加载,无法执行相对导入

我该怎么解决?

共有3个答案

高山
2023-03-14

文件夹结构很重要。您没有命名您的模块;我把它叫做< code>foo。把东西放在正确的地方:

$ mkdir foo
$ touch foo/__init__.py
$ mv /some/place/{test1,test2}.py foo/

请注意,即使在您编写test.py文件之前,python-c'import test'已经可以工作了。为了避免混淆,我建议命名您的文件test1.py.

调用代码的方式很重要。验证<代码>。点位于< code>sys.path中:

$ export PYTHONPATH=.
$ python -m foo.test1

或者,如果您愿意,这应该可以工作:

$ python foo/test1.py

编辑:

我回答了问题#1,OP现在提出关于此诊断的问题#2:

ImportError:无法从“main”导入名称“test”(C:/Users/Username/test 2 . py)

请以适当的结构组织您的文件。您需要将 test2.py 放在foo/目录中(或任何您想要称呼它的东西)中。您需要创建一个空的 foo/__init__.py 文件,因为这对导入机制很重要。

此外,调用环境中的PYTHONPATH env var也很重要。除了命令行环境之外,您现在还引入了PyCharm环境。注意为您的项目正确html" target="_blank">配置PyCharm。单击首选项-

import sys
import pprint
pprint.pprint(sys.path)

由于<code>导入测试

范振海
2023-03-14

在Python3中

test2.py:

import test

test.py:

if __name__ == "__main__":
    print('Test works')

如果您想在其他文件test2.py中打印“测试工作”:

import test
test.main()

test.py:

def main():
    print('Test works')

if __name__ == "__main__":
    main()
督弘化
2023-03-14

这种“文件夹结构很重要”是python3中的一个大问题。在编码时,您的文件夹结构应该无关紧要,但应该正确引用。

我只是根据if是在本地运行还是作为模块的一部分来使用if/else:

if __name__ == "__main__": # Local Run
    import test
else: # Module Run, When going production - delete if/else
    from . import test
 类似资料:
  • 问题内容: 将Ubuntu升级到Precise Pangolin(12.04),Python的Random现在被破坏了……我怀疑其他东西也可能被破坏了。如何修复Python? las,可怜的Python! 我认识他,兰德(Random),这是一个无限开玩笑的模块,最可能是混乱的。他已经用我的randint()烦了我一千遍,现在在我的工作空间里真是令人讨厌!我的异常处理程序出现了。 编辑 在virt

  • 我是python的新手,我遇到了一个我无法解决的问题。 我的文件结构是: 在此输入图像描述 Criador.py我有几个功能,例如: 我尝试在Controller.py文件中使用其中一个函数: 我做的第一件事是,在Controller.py上: 然后试着用这个函数作为: 运行 Controller.py 后,我收到此错误: 我尝试了其他几件事,比如: 或 或 没有任何帮助,只是将错误改为: 和 和

  • 问题内容: 我想将代码放在不同的类中,并将它们放入不同的文件中。但是这些类是相互依赖的。 main.py: lib / _ 初始化 _.py: lib / a.py: lib / b.py: 是否可以在Python中做到这一点? 编辑: 我收到此错误消息: 问题答案: 您可以在hello函数中导入其他模块,而不必在顶部导入模块。

  • 通过遵循GEKKO文档,我使用了线性和多项式回归的示例。这里是关于简单线性回归的部分。 我只是想知道为什么不评论这些行会得到不同的结果 文件中获得的结果(线性、二次、三次)似乎不是最小二乘法。在这些情况下使用了什么样的最小化标准? 向你问好,拉多万

  • 问题内容: 我正在导入许多不同的脚本,因此在文件的顶部,它会被导入语句弄得乱七八糟,即: 有没有办法将所有这些都移动到其他地方,然后我要做的就是导入该文件,所以它只是一个干净的导入? 问题答案: 当然有;只需在主文件所在的目录中创建一个名为的文件,然后将导入文件放置在该目录中即可。然后,您可以简单地在主脚本中使用。

  • 问题内容: 我有四个不同的文件,分别命名为:和。我不会发布所有代码,而只会发布导入代码,因为我认为这就是错误所在。(如果需要,我可以发布更多信息) 主要: 实体: 向量: 物理: 然后,我从main.py运行,出现以下错误: 我对Python非常陌生,但是已经使用C ++了很长时间。我猜测该错误是由于两次导入实体引起的,一次是在主体中,一次是在物理中,但是我不知道解决方法。有人可以帮忙吗? 问题答