我想将一些代码从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系统错误:父模块“”未加载,无法执行相对导入
我该怎么解决?
文件夹结构很重要。您没有命名您的模块;我把它叫做< 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>导入测试
在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()
这种“文件夹结构很重要”是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 ++了很长时间。我猜测该错误是由于两次导入实体引起的,一次是在主体中,一次是在物理中,但是我不知道解决方法。有人可以帮忙吗? 问题答