java 无法import_ImportError:无法导入名称X
我有四个不同的文件,分别命名为:main,vector,entity和physics。 我不会发布所有代码,而只会发布导入代码,因为我认为这就是错误所在。 (如果需要,我可以发布更多信息)
主要:
import time
from entity import Ent
from vector import Vect
#the rest just creates an entity and prints the result of movement
实体:
from vector import Vect
from physics import Physics
class Ent:
#holds vector information and id
def tick(self, dt):
#this is where physics changes the velocity and position vectors
向量:
from math import *
class Vect:
#holds i, j, k, and does vector math
物理:
from entity import Ent
class Physics:
#physics class gets an entity and does physics calculations on it.
然后,我从main.py运行,出现以下错误:
Traceback (most recent call last): File "main.py", line 2, in from entity import Ent File ".../entity.py", line 5, in from physics import Physics File ".../physics.py", line 2, in from entity import Ent ImportError: cannot import name Ent
我对Python非常陌生,但是已经使用C ++了很长时间。 我猜测该错误是由于两次导入实体引起的,一次是在实体中,一次是在物理学中,但是我不知道解决方法。 有人可以帮忙吗?
#1楼
虽然您绝对应该避免循环依赖,但可以推迟python中的导入。
例如:
import SomeModule
def someFunction(arg):
from some.dependency import DependentClass
这(至少在某些情况下)将避免该错误。
#2楼
这是循环依赖性。 无需对代码进行任何结构修改即可解决。 出现问题是因为在vector您要求立即使entity可用,反之亦然。 出现此问题的原因是,您要求在模块准备就绪之前访问它的内容-通过使用from x import y 。 这基本上与
import x
y = x.y
del x
Python能够检测循环依赖关系并防止导入的无限循环。 本质上,所有发生的事情都是为模块创建了一个空的占位符(即,它没有内容)。 一旦循环依赖的模块被编译,它将更新导入的模块。 这是类似的工作。
a = module() # import a
# rest of module
a.update_contents(real_a)
为了使python能够处理循环依赖,您必须仅使用import x样式。
import x
class cls:
def __init__(self):
self.y = x.y
由于您不再在顶层引用模块的内容,因此python可以编译模块,而无需实际访问循环依赖项的内容。 顶层是指在编译过程中将执行的行,而不是函数的内容(例如y = xy )。 访问模块内容的静态或类变量也会引起问题。
#3楼
我也刚收到这个错误,原因有所不同...
from my_sub_module import my_function
主脚本具有Windows行尾。 my_sub_module具有UNIX行结尾。 将它们更改为相同可解决此问题。 它们还需要具有相同的字符编码。
#4楼
弄清楚逻辑很重要。 出现此问题,因为该引用成为死循环。
如果您不想更改逻辑,则可以将导致ImportError的某些import语句放在文件的其他位置,例如结尾。
py
from test.b import b2
def a1():
print('a1')
b2()
b.py
from test.a import a1
def b1():
print('b1')
a1()
def b2():
print('b2')
if __name__ == '__main__':
b1()
您将收到导入错误: ImportError: cannot import name 'a1'
但是,如果我们改变test.b的位置,将b2导入A如下所示:
py
def a1():
print('a1')
b2()
from test.b import b2
我们可以得到我们想要的:
b1
a1
b2
#5楼
不要使用您导入的其他模块的名称来命名当前的python脚本
解决方案: 重命名工作的python脚本
例:
您在medicaltorch.py工作
在该脚本中,您具有: from medicaltorch import datasets as mt_datasets ,其中medicaltorch应该是已安装的模块
这将因ImportError而失败。 只需在1中重命名工作的python脚本即可。
java 无法import_ImportError:无法导入名称X相关推荐
- java项目中表格导入找到最近父类生成树形结构
业务场景:xlsx表格当中有5个层级,在导入项目中时要确保页面展示的结构为树形,但是有一些的零部件从属(父类编号)是一样的,这样就给导入表格的程序导致分别不出有一些的零部件是在哪一级的父类下面,所以导 ...
- java excel 导入 关闭,excel关联别的表格数据库-java实现excel表导入,有的字段数据库中没有,需要关......
excel中我想用另一张表的内容我数据库,当我在一个... 用VLOOKUP函数,=VLOOKUP(lookup_value,table_array,col_index_num,range_looku ...
- JAVA POI通用Excel导入模板
JAVA POI通用Excel导入模板 Excel导入模板类 Excel导入模板类 package com.golte.dataform.analysis.controller;import com. ...
- Java 编程思想源代码导入eclipse使用流程
Java 编程思想源代码导入eclipse使用流程 1. 简介 <Java编程思想>是2007年机械工业出版社出版的图书,作者是埃克尔,译者是陈昊鹏.作为一个开发程序员,Java语言或许 ...
- java使用EasyExcel实现导入导出几种方式(导入、模板导出、和不需要模板的导出)
java通过EasyExcel实现导入导出(导入.模板导出.和不需要模板的导出) 此文章只是涉及到简单的导入导出 通过实体模板导入数据 无实体模板导入数据 导出数据 通过模板导出数据 使用到的mave ...
- 【Java】eclipse如何导入项目
[Java]eclipse如何导入项目 1.第一步,打开eclipse,点击file->import 2.第二步,选择general->existing projects into wor ...
- 升级pip后出错:无法导入名称“ main”
本文翻译自:Error after upgrading pip: cannot import name 'main' Whenever I am trying to install any packa ...
- java主类与源代码名称_java 获取操作系统名称 附源代码
记得刚入手 在写跨平台代码的时候,有一些操作是与平台有关的,这个时候,准确地了解软件是在哪个平台下进行工作就显得非常重要了,知道了软件在哪种类型的操作系统下工作,分别编写不同的代码,就可以让整个软件地 ...
- Java中获得了方法名称的字符串,怎么样调用该方法
问题: Java中获得了方法名称的字符串,怎么样调用该方法 如果我有以下两个变量 Object obj; String methodName = "getName"; 在不知道ob ...
- Java反射————Method根据方法名称字符串调用方法
引言 之前浏览廖雪峰老师的个人博客网站,无意间发现了关于在Java8中获取参数的方法,随手一转<Java 8中获取参数名称>,没想到今天遇到一个功能,非常符合这种反射调用的使用场景.回看了 ...
最新文章
- python的sklearn示例_KNN sklearn python实现小示例
- img 隐藏_CSS3界面样式和溢出文字隐藏overflow
- 降低数据中心功耗的 4 大方法
- 利用Date类计算生活时间
- 装扮圣诞海报气氛,你需要这些小元素!
- 开发门槛被低代码降低,传统企业IT岗的活路在哪里
- html5指南--1.html5全局属性(html5 global attributes)
- 算法面试题 java_【面试算法题】Java Stack 类的使用
- 【图像处理】基于matlab GUI图像全局+局部美化【含Matlab源码 1461期】
- 二叉树遍历(前中后序遍历代码及注释)
- ug冲模标准件库_UG标准件库|标准件库下载|3DSource零件库|海量CAD模型
- arduino超声波测距接线图详细_Arduino学习笔记A2 - Arduino连接超声波传感器测距
- Got10k追踪数据集
- 2012-8-18可樂美文分享《遗留在时…
- 如何组织可持续的团队内部分享
- 高效文件管理-Git管理个人文件指南
- 8种CSS3按钮动画特效【附源码】
- cgb2111-day02
- 营销玩法|世界杯期间产品如何提高互动性?
- Unity 将Sprite打包进图集
热门文章
- anddroid bitmap如何由rgb8888转为rgb565_最美的期待—孕期很美好,妊娠纹让人烦恼,爱美的孕妈妈们如何是好?...
- Android Lint 检查规则的定制(基本篇)
- 饿了么订单--快到碗里来
- 网络研讨会的邀请:SQL优化:你不是一个人在战斗
- sqlserver_identity
- 开源工具 PrivateBin 修复XSS 漏洞
- Windows 新漏洞可被用于强制服务器以攻击者身份认证,官方缓解措施已发布
- 微软6月补丁日修复7个0day:6个已遭利用且其中1个是为 APT 服务的商用exploit
- 谷歌安全研究员发现3个 Apache Web 服务器软件缺陷
- QEMU CVE-2020-14364 漏洞分析(含 PoC 演示)