-
pip升级后Import Error:cannot import name main解决方案
2018-05-22 19:29:05在Ubuntu上安装软件,不小心升级了pip,导致使用时报错如下 后来发现是因为将pip更新为10.0.0后库里面的函数有所变动...from pip import main 改为 from pip._internal import main 方法二: sudo gedit ...在Ubuntu上安装软件,不小心升级了pip,导致使用时报错如下
后来发现是因为将pip更新为10.0.0后库里面的函数有所变动造成这个问题。 解决方法如下:
方法一:
sudo vim /usr/bin/pip
注意,如果自己是要用pip3,则修改对应的/usr/bin/pip3,将原来的
from pip import main
改为
from pip._internal import main
方法二:
sudo vim /usr/bin/pip
将原来的:
from pip import main if __name__ == '__main__': sys.exit(main())
改为:
from pip import __main__ if __name__ == '__main__': sys.exit(__main__._main())
就可以了,注意__main__左右的下划线是两个下划线,很多同学不成功的原因是因为只写了一个下划线
-
[译][python]ImportError:attempted relative import with no known parent package
2017-12-29 12:49:29前言在这篇文章中,我将会解析 ImportError: attempted relative import with no known parent package 这个异常的原因。当你在运行的python脚本。使用了相对引用方式 (类似import ..module) 去引用包时,可能会出现...前言
在这篇文章中,我将会解析
ImportError: attempted relative import with no known parent package
这个异常的原因。当你在运行的python脚本。使用了相对引用方式 (类似import ..module
) 去引用包时,可能会出现这个异常。让我们来看看发生这个异常的例子。
问题
假设你有以下目录结构:
project ├── config.py └── package ├── __init__.py └── demo.py
config.py
中包含一些应该在demo.py
中使用的变量- project/config.py
count = 5
- project/package/demo.py
from .. import config print("The value of config.count is {0}".format(config.count))
当我们尝试运行
demo.py
时,会遇到以下错误:E:\project> python demos/demo.py Traceback (most recent call last): File "demos/demo.py", line 1, in <module> from .. import config ImportError: attempted relative import with no known parent package
python解释器抛出了没有父级包的异常。为什么?
让我们看看python解释器是如何解析相关模块。从 PEP 328 中,我们找到了关于
the relative imports
(相对引用)的介绍:Relative imports use a module’s __name__ attribute to determine that module’s position in the package hierarchy. If the module’s name does not contain any package information (e.g. it is set to __main__ ) then relative imports are resolved as if the module were a top level module, regardless of where the module is actually located on the file system.
相对导入通过使用模块的 __name__ 属性来确定模块在包层次结构中的位置。如果该模块的名称不包含任何包信息(例如,它被设置为 __main__ ),那么相对引用会认为这个模块就是顶级模块,而不管模块在文件系统上的实际位置。
换句话说,解决模块的算法是基于
__name__
和__package__
变量的值。大部分时候,这些变量不包含任何包信息 ---- 比如:当__name__
=__main__
和__package__
=None
时,python解释器不知道模块所属的包。在这种情况下,相对引用会认为这个模块就是顶级模块,而不管模块在文件系统上的实际位置。为了演示这个原理,我们来更新一下代码:
- project/config.py
print('__file__={0:<35} | __name__={1:<20} | __package__={2:<20}'.format(__file__,__name__,str(__package__))) count = 5
- project/package/demo.py
print('__file__={0:<35} | __name__={1:<20} | __package__={2:<20}'.format(__file__,__name__,str(__package__))) from .. import config print("The value of config.count is {0}".format(config.count))
再次尝试运行一下,会得到以下输出:
E:\project> python demos/demo.py __file__=demos/demo.py | __name__=__main__ | __package__=None Traceback (most recent call last): File "demos/demo.py", line 3, in <module> from .. import config ImportError: attempted relative import with no known parent package
正如我们所看到的,python解释器没有关于模块所属的包的任何信息(
__name__
=__main__
和__package__
=None
),因此它抛出了找不到父级包的异常。解决方案一
-
我们通过在其中创建一个新的空
__init__.py
文件来将项目目录转换为一个包。 -
我们在项目目录的父目录中创建一个文件
main.py
toplevel ├── main.py └── project ├── __init__.py ├── config.py └── demos ├── __init__.py └── demo.py
- toplevel/main.py
print('__file__={0:<35} | __name__={1:<20} | __package__={2:<20}'.format(__file__,__name__,str(__package__))) import project.demos.demo
执行一下新的示例,输出如下:
E:\toplevel>python main.py __file__=main.py | __name__=__main__ | __package__=None __file__=E:\toplevel\project\demos\demo.py | __name__=project.demos.demo | __package__=project.demos __file__=E:\toplevel\project\config.py | __name__=project.config | __package__=project The value of config.count is 5
在
main.py
中导入project.demos.demo
会设置相对引用的包信息(__name__
和__package__
变量)。现在,python解释器可以成功解析project\demos\demo.py
中的相对引用了。解决方案二
-
我们通过在
project
文件夹中创建一个新的空__init__.py
来将project
目录转换为一个包。 -
在
toplevel
目录下通过-m
参数来调用python解释器,去执行project.demos.demo
[1]
toplevel └── project ├── __init__.py ├── config.py └── demos ├── __init__.py └── demo.py
再次执行:
E:\toplevel>python -m project.demos.demo __file__=E:\toplevel\project\demos\demo.py | __name__=__main__ | __package__=project.demos __file__=E:\toplevel\project\config.py | __name__=project.config | __package__=project The value of config.count is 5
运行该命令将自动设置包信息(
__package__
变量)。现在,python解释器可以成功解析project\ demos\demo.py
中的相对引用了(甚至认为__name __
=__ main__
)。[1] 译者注:注意使用
-m
参数的时候,后面指定的执行文件没有.py
后缀import-error-relative-no-parent
注:转载请保留下面的内容
原文链接:https://www.napuzba.com/story/import-error-relative-no-parent/
译文链接:http://vimiix.com/post/2017/12/29/import-error-relative-no-parent/
-
报错:Uncaught SyntaxError: Cannot use import statement outside a module 详解
2019-10-01 20:10:24JS错误Uncaught SyntaxError: Cannot use import statement outside a module< 分析及解决方法 错误信息: 错误分析: HTML 网页中,浏览器通过 script 标签加载 JavaScript 脚本。由于浏览器脚本的默认语言是 ... -
Python import同级目录报错
2017-08-16 17:55:54Python import同级目录报错参考:http://blog.csdn.net/geekleee/article/details/52505233
pycharm不会将当前文件目录自动加入自己的sourse_path。右键make_directory as-->Sources Root将当前工作的文件夹加入source_path就可以了。还有一点:models加一个点,表示同级目录。from .models import classNimport功能实际应用还有很多坑:
比如,不通过模块名字,直接引入模块内的类
我们创建一个包叫ccc,然后下面的init里面什么也没写,都是空的
然后bbb.by里面的内容是:def a(): print (1)
如果你要访问这个函数a
首先第一点,一个写法:
from ccc.bbb import a ,注意,他只能通过 包名.模块名来import具体函数
如果你直接用from ccc import a ,是会报警的,报警如下:>>> from ccc import a Traceback (most recent call last): File "<input>", line 1, in <module> ImportError: cannot import name 'a'
其实,关键是,如果你要通过from ccc import a,重要的是init的内容
如果我们把init内容写成下图3
from .bbb import a,这里面的 .bbb是什么意思呢?就是在同级目录下面的bbb模块,如果前面是2个点,那就是上级目录的bbb现在,要讲一个重要概念!!!
当你导入一个包的时候,实际上是导入了这个包的init.py的文件,所以,如果你在init里面写入了其他的import功能,就等于是在初始化的时候帮忙导入了其他东西。
就比如下面的例子,他在导包的时候,就顺便导入了a这个函数!!
从这个话题引申到其他话题,我在做flask第一节课的时候一直无法理解,为什么from flask import Flask可以成功?
第一个flask是包,第二个Flask是类,但是,实际上这个Flask类是在flask包的目录下app.py里面的。
所以后来我去看了flask包的init.py,原来在里面,他已经帮你导入了Flask类,所以你在导入flask包的时候,就已经可以直接导Flask类了
看到里面的 from .app import Flask, Request, Response
.app就表示了在flask包下,和init同级的app.py -
java中import作用详解
2017-07-07 17:47:19java中import详解import与package机制相关,这里先从package入手,再讲述import以及static import的作用。 -
python中的import、from import以及import as的区别
2019-07-02 22:18:48首先介绍一下import和include的区别或者说import相对include的好处: import导入的内容只会被包含一次,在引入之前会检测是否已经存在该模块,不存在才会被引入,而include是不会做判断的。使用import在递归包含的... -
pycharm如何自动import所需的库
2020-08-23 11:43:03pycharm如何自动import所需的库快捷键命令演示操作(以mac为例)1.未导入包时情景2.按option + Enter键唤起菜单3.选择导入包(Import this name)4.选择包的地址5.导入成功,红色下划线消失 快捷键命令 win: Alt + ... -
import static和import的区别
2019-03-31 21:42:44什么是import static? import static 静态导入是JDK1.5中的新特性。一般我们导入一个类都用 import com…ClassName;而静态导入是这样:import static com…ClassName.;这里的多了个static,还有就是类名ClassName... -
PyImport_ImportModule
2017-12-14 17:38:40pModule = PyImport_ImportModule("get")总是返回空值NULL get.py: from keras.models import load_model from keras.models import Model import tensorflow as tf import numpy as np def ... -
Python 3.x | 史上最详解的 导入(import)
2018-07-27 15:05:02win10+Python 3.6.3 一、理解一些基本概念 1、包、模块 模块 module:一般情况下,是一个以.py为后缀的文件。其他可作为module的文件类型还有”.pyo”、”.pyc”、”.pyd”、”.so”、”.dll”,但Python初学者... -
python import 上级目录
2018-05-12 10:48:07python import 上级目录 有时候我们可能需要import另一个路径下的python文件,例如下面这个目录结构,我们想要在_train.py里import在networks目录下的_lstm.py和上级目录下的_config.py。 _config.py networks... -
empty line after import statement not followed by another import. (import/newline-after-import)
2019-06-27 16:07:46empty line after import statement not followed by another import. (import/newline-after-import) import语句后的空行后面没有另一个import。(导入/导入后换行) 回车换行一下就解决了 ... -
python import 和from import 区别
2018-03-09 02:40:28什么鬼,看不懂,不是说import sklearn 后应该可以通过点.来访问sklearn里的所有内容吗,就像numpy中那样。初学者,不懂,求大神解释下,不胜感激!! 这样也报错 ``` import sklearn.datasets a=datasets... -
注意import和from import 的区别
2019-05-29 10:02:40注意python中import和from import 的区别 首先明确:尽量不要为了图省事使用from xxx import * python中有两种导入模块的方式,一种是import xxx,另一种是from xxx import yyy,两者的区别在于,第一种仅仅导入一个... -
import os
2019-07-25 15:31:52为什么要执行import os? import os的作用是什么? 1、为什么要执行import os? 我们在python下写程序,需要对文件以及文件夹或者其他的进行一系列的操作。但是,我们怎么在python中对文件进行操作呢?这就引入了os... -
Python PyImport_ImportModule() 或者 PyImport_Import()失败问题
2017-02-23 14:37:17通过Python PyImport_ImportModule() 或者 PyImport_Import()导入自定义模块时,若不成功有可能是该自定义文件中其实位置import第三方的库没有安装,如requests; -
IDEA Unable to import maven project: See logs for details (maven的坑)
2019-06-03 00:13:12系统重装之后,Idea的配置是之前就认为没什么问题,就没去过多注意,但是后来发现建SpringBoot项目默认的版本太高,pom.xml每次都会报错,因为是maven本地库没有相应的包,我就手动设置一下版本,混过过去就算了,没... -
import sys
2019-07-25 15:10:00import sys 的作用是什么? 参考来源 1、首先,先看一段代码 1. from sys import argv 2. script,first,second,third=argv 3. print ("The script is called: ",script) 4. print ("you first variable is: ",... -
Python中import, from...import,import...as的区别
2017-07-26 10:01:51在python中import或者from…import是用来导入相应的模块。举个例子:import datetime print(datetime.datetime.now())以上代码实现输出系统当前时间,是引入整个datetime包,然后再调用datetime这个类中的now()方法... -
import与@import的区别
2017-09-08 14:21:29前端面试秘籍,欢迎star!...style中的@import是stylus的语法(没用过stylus, 不知道引用文件是不是@import) 也就是在css中引用css文件, 就像saas那样理论上效果都是一样的, 都是将依赖的文件在打包的时候一块打包进去 ... -
import torchvision 时 cannot import name optional怎么解决
2020-03-21 21:19:07import torchvision 时 cannot import name optional怎么解决 -
idea的Import changes 和enable auto-import
2019-10-20 00:23:12Import Changes:导入我们新添加的依赖 Enable Auto-Import:以后更改 .pom 文件后自动下载依赖包 最简单的说法,如果你想勤快点儿,修改一点儿pom.xml就点一下,你就选import changes 否则,你就选enable auto... -
python import 与 from...import 区别介绍
2020-07-07 12:35:12在 python 用 import 或者 from...import 来导入相应的模块。 将整个模块(somemodule)导入,格式为: import somemodule 从某个模块中导入某个函数,格式为: from somemodule import somefunction 从某个模块... -
from numpy import * import operator和import numpy as np
2018-06-21 10:30:07在做knn算法时,看到unmpy的不同引用方法,不知道其区别,后来查了资料后知道了两者区别,简单记录一下摘自 https://zhidao.baidu.com/question/877431035722473172.html(1)import numpy,如果你使用numpy的属性... -
关于import与import...as与from...import
2017-10-23 22:49:53这边说明一下import以及from....import以及import.....as import datetime print(datetime.datetime.now()) 以上代码实现输出系统当前时间,是引入整个datetime包,然后再调用datetime这个类中的now()方法。 ... -
Python import和import *的区别
2019-05-31 10:49:31import numpy 这是导入了整个numpy模块,需要使用句点表示法访问需要的类。例如 a = numpy.array([1,1]) 导入方法二: from numpy import * 这是导入了numpy模块的每个类,可以直接使用类,无需... -
import、from…...import * 和 from import 的区别
2019-05-25 14:44:20import 模块:导入一个模块,注:相当于导入的是一个文件夹,每次使用模块中的函数都要确定引用 from…import模块:导入的是一个模块中的一个函数;注:相当于导入的是一个文件夹中的文件,是绝对路径 from…... -
运行nodejs项目,npm start启动项目import报错,SyntaxError: Cannot use import statement outside a ...
2019-11-29 22:59:51运行nodejs项目,npm start启动项目import报错,SyntaxError: Cannot use import statement outside a module -
Python import 和 from import区别
2016-05-23 19:08:29导入mode,import与from...import的不同之处在于,简单说: 如果你想要直接输入argv变量到你的程序中而每次使用它时又不想打sys, 则可使用:from sys import argv 一般说来,应该避免使用from..import而使用... -
sqoop ERROR tool.ImportTool: Error during import: Import job failed!
2017-12-08 10:48:39sqoop import -connect jdbc:oracle:thin:@1.1.1.1:1521:aaa -username a -password a -table xx.xxxx -hive-import xxx.xxxx -m 1 ERROR tool.ImportTool: Error during import: Import job failed! 由于是...
-
基于matlab的QPSK系统仿真
-
Redhat6.5安装Oracle11g.docx
-
spring boot项目部署到外置tomcat
-
基于计算机声卡的虚拟仪器
-
UNLOCK.iso加密解密软件和狗的一些资料
-
微信支付2021系列之付款码支付一学就会java版
-
c++ STL阐述了各种查找算法的异同以及使用他们的时机
-
【2021】Python3+Selenium3自动化测试(不含框架)
-
【Soul网关探秘】微内核架构及实现
-
小米note维修原理图PCB位置图(PDF格式)
-
Selenium3分布式与虚拟化
-
基于solidworks中的stewart平台建模
-
php实现的简单问卷调查系统
-
Toshiba BlueTooth.zip
-
ZigBee开发相关软件.zip
-
浅谈Constraints,Layout,Display的点点滴滴
-
计算机专业文献综述格式示例.doc
-
UnitySocket异步聊天室
-
转行做IT-第7章 数组
-
C语言的异常处理和C++的异常处理有何区别?