精华内容
下载资源
问答
  • Python import同级目录报错

    万次阅读 多人点赞 2017-08-16 17:55:54
    Python import同级目录报错

    参考:http://blog.csdn.net/geekleee/article/details/52505233

     

    pycharm不会将当前文件目录自动加入自己的sourse_path。右键make_directory as-->Sources Root将当前工作的文件夹加入source_path就可以了。
     
    还有一点:
    models加一个点,表示同级目录。from .models import classN

     

     

    import功能实际应用还有很多坑:
    比如,不通过模块名字,直接引入模块内的类 
    我们创建一个包叫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 
    这里写图片描述

     
     

     

     

     

    展开全文
  • python import 上级目录

    万次阅读 热门讨论 2018-05-12 10:48:07
    python import 上级目录   有时候我们可能需要import另一个路径下的python文件,例如下面这个目录结构,我们想要在_train.py里import在networks目录下的_lstm.py和上级目录下的_config.py。 _config.py networks...

    python import 上级目录

      有时候我们可能需要import另一个路径下的python文件,例如下面这个目录结构,我们想要在_train.py里import在networks目录下的_lstm.py和上级目录下的_config.py

    _config.py
    networks
    	_lstm.py
    	_cnn.py
    pipelines 
    	_train.py
    

    只需两步操作
    (1)在networks文件夹下创建空的__init__.py文件

    _config.py
    networks
    	__init__.py
    	_lstm.py
    	_cnn.py
    pipelines 
    	_train.py
    

    (2)使用sys库添加路径

    # _train.py
    import sys
    sys.path.append("..") # 这句是为了导入_config
    from networks._lstm import *
    from _config import *
    

    更新

    有同学反映,Python 3.6.7以上方法失效。这里给出一个不优雅的解决方法,其本质是递归遍历文件路径,增加到引用的路径中。
    完整测试代码请看 https://github.com/SongDark/Import_Test

    # _train.py
    import sys, os
    sys.path.append("..")
    sys.path.extend([os.path.join(root, name) for root, dirs, _ in os.walk("../") for name in dirs])
    
    展开全文
  • python import用法

    千次阅读 2017-07-03 15:31:52
    python import基本用法

    import  导入某个模块的功能(函数),方便该模块的直接调用

    import somemodule #导入某个模块

    from somemodule import somefunction #导入模块的somefunction方法

    from somemodule import function1,function2,... #导入模块的function,function2等方法

    from somemodule import  * #导入模块的所有方法

    as 关键字的用法

    import somemodule as moduleA

    from somemodule import somefunction as functionA

    接下来可以直接调用moduleA、functionA

    展开全文
  • python import导入的路径问题

    万次阅读 2018-04-30 21:13:50
    转载:http://www.jb51.net/article/102252.htm...Python import 的搜索路径在当前目录下搜索该模块在环境变量 PYTHONPATH 中指定的路径列表中依次搜索在 Python 安装路径的 lib 库中搜索Python import 的步骤pyt...

    转载:http://www.jb51.net/article/102252.htm


    前言

    Python 相对导入与绝对导入,这两个概念是相对于包内导入而言的。包内导入即是包内的模块导入包内部的模块。

    Python import 的搜索路径

    1. 在当前目录下搜索该模块
    2. 在环境变量 PYTHONPATH 中指定的路径列表中依次搜索
    3. 在 Python 安装路径的 lib 库中搜索

    Python import 的步骤

    python 所有加载的模块信息都存放在 sys.modules 结构中,当 import 一个模块时,会按如下步骤来进行

    1. 如果是 import A,检查 sys.modules 中是否已经有 A,如果有则不加载,如果没有则为 A 创建 module 对象,并加载 A
    2. 如果是 from A import B,先为 A 创建 module 对象,再解析A,从中寻找B并填充到 A 的 __dict__

    相对导入与绝对导入

    绝对导入的格式为 import A.Bfrom A import B,相对导入格式为 from . import Bfrom ..A import B,.代表当前模块,..代表上层模块,...代表上上层模块,依次类推。

    相对导入可以避免硬编码带来的维护问题,例如我们改了某一顶层包的名,那么其子包所有的导入就都不能用了。但是 存在相对导入语句的模块,不能直接运行,否则会有异常:

    1
    ValueError: Attempted relative import in non-package

    这是什么原因呢?我们需要先来了解下导入模块时的一些规则:

    在没有明确指定包结构的情况下,Python 是根据 __name__ 来决定一个模块在包中的结构的,如果是 __main__ 则它本身是顶层模块,没有包结构,如果是A.B.C 结构,那么顶层模块是 A。基本上遵循这样的原则:

    1. 如果是绝对导入,一个模块只能导入自身的子模块或和它的顶层模块同级别的模块及其子模块
    2. 如果是相对导入,一个模块必须有包结构且只能导入它的顶层模块内部的模块

    如果一个模块被直接运行,则它自己为顶层模块,不存在层次结构,所以找不到其他的相对路径。

    Python2.x 缺省为相对路径导入,Python3.x 缺省为绝对路径导入。绝对导入可以避免导入子包覆盖掉标准库模块(由于名字相同,发生冲突)。如果在 Python2.x 中要默认使用绝对导入,可以在文件开头加入如下语句:

    1
    from __future__ import absolute_import

    from __future__ import absolute_import

    这句 import 并不是指将所有的导入视为绝对导入,而是指禁用 implicit relative import(隐式相对导入), 但并不会禁掉 explicit relative import(显示相对导入)。

    那么到底什么是隐式相对导入,什么又是显示的相对导入呢?我们来看一个例子,假设有如下包结构:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    thing
    ├── books
    │ ├── adventure.py
    │ ├── history.py
    │ ├── horror.py
    │ ├── __init__.py
    │ └── lovestory.py
    ├── furniture
    │ ├── armchair.py
    │ ├── bench.py
    │ ├── __init__.py
    │ ├── screen.py
    │ └── stool.py
    └── __init__.py

    那么如果在 stool 中引用 bench,则有如下几种方式:

    1
    2
    3
    import bench     # 此为 implicit relative import
    from . import bench   # 此为 explicit relative import
    from furniture import bench # 此为 absolute import

    隐式相对就是没有告诉解释器相对于谁,但默认相对与当前模块;而显示相对则明确告诉解释器相对于谁来导入。以上导入方式的第三种,才是官方推荐的,第一种是官方强烈不推荐的,Python3 中已经被废弃,这种方式只能用于导入 path 中的模块。

    相对与绝对仅针对包内导入而言

    最后再次强调,相对导入与绝对导入仅针对于包内导入而言,要不然本文所讨论的内容就没有意义。所谓的包,就是包含 __init__.py 文件的目录,该文件在包导入时会被首先执行,该文件可以为空,也可以在其中加入任意合法的 Python 代码。

    相对导入可以避免硬编码,对于包的维护是友好的。绝对导入可以避免与标准库命名的冲突,实际上也不推荐自定义模块与标准库命令相同。

    前面提到含有相对导入的模块不能被直接运行,实际上含有绝对导入的模块也不能被直接运行,会出现 ImportError:

    1
    ImportError: No module named XXX

    这与绝对导入时是一样的原因。要运行包中包含绝对导入和相对导入的模块,可以用 python -m A.B.C 告诉解释器模块的层次结构。

    有人可能会问:假如有两个模块 a.py 和 b.py 放在同一个目录下,为什么能在 b.py 中 import a 呢?

    这是因为这两个文件所在的目录不是一个包,那么每一个 python 文件都是一个独立的、可以直接被其他模块导入的模块,就像你导入标准库一样,它们不存在相对导入和绝对导入的问题。相对导入与绝对导入仅用于包内部。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用python能有一定的帮助,如果有疑问大家可以留言交流。

    展开全文
  • python import 同名模块

    万次阅读 2015-06-15 19:15:37
    python import 在引入模块的时候,如果模块名字和当前所在文件名一致,则会报错(默认引用当前) 例如,在bc目录下的 test.py中 我想import 和bc同级test目录下的 abc:  bc/  test.py  test/abc.py 在test.py中 ...
  • 什么鬼,看不懂,不是说import sklearn 后应该可以通过点.来访问sklearn里的所有内容吗,就像numpy中那样。初学者,不懂,求大神解释下,不胜感激!! 这样也报错 ``` import sklearn.datasets a=datasets...
  • 在eclipse下开发python不需要如下语句 #!/usr/bin/python 但是,在终端执行会出现 python import: command not found
  • Python import docx出错DLL load failed

    千次阅读 2017-07-06 21:41:44
    Python import docx出错DLL load failed在用pip安装完docx之后,import docx报错DLL load failed,经过排查发现是因为lxml的问题。用pip安装docx的时候,安装的是3.8.0版本的lxml,将lxml卸载,安装3.7.3版本即可...
  • Python import 失败

    千次阅读 2018-01-06 15:41:44
    今天在使用caffe的python接口的时候出现了:ImportError: No module named google.protobuf.internal 的错误(源代码里写的是from google.protobuf.internal import **),然后就通过相对导入的方式,即将google包的...
  • python项目中不同文件夹py源文件之间如何相互调用,下面将以实际例子给出解决方案:Python import中相对路径的问题
  • python import导入包时前面加个点是什么意思? import .abc这个表示导入当前文件夹下的一个包(而不是导入其他文件夹的包)。
  • python import 与 from...import 区别介绍

    千次阅读 2020-07-07 12:35:12
    pythonimport 或者 from...import 来导入相应的模块。 将整个模块(somemodule)导入,格式为: import somemodule 从某个模块中导入某个函数,格式为: from somemodule import somefunction 从某个模块...
  • Python importimport *的区别

    千次阅读 2019-05-31 10:49:31
    import numpy 这是导入了整个numpy模块,需要使用句点表示法访问需要的类。例如 a = numpy.array([1,1]) 导入方法二: from numpy import * 这是导入了numpy模块的每个类,可以直接使用类,无需...
  • Python import .pyd 可能遇到路径的问题

    万次阅读 2015-04-27 22:00:36
    Python import .pyd文件时会搜索sys.path列表中的路径 运行 import xxx.pyd 1. 'ImportError: No module named xxx' 可能是xxx.pyd所在路径不在sys.path中。 解决方法:import之前用sys.path.append()方法加入...
  • python import 导入概述 在一个导入语句中的模块名起到两个作用:识别加载的外部文档,也会变成赋值给被载入模块的变量,模块定义的对象也会在执行时创建,就是在Import执行时,import会一次运行在目标文档中的语句...
  • 通过import os os.getcwd() 可以查看当前的工作目录。 在命令行通过 python xx/yy/zz.py 文件执行时,当前的工作目录是 xx 所在的路径,但是加入到搜索路径的是 zz.py 所在的路径。 2、PYTHONPATH 环境变量中的...
  • python import自己的库

    千次阅读 2018-04-11 10:06:10
    背景 import自己的库失败。 举例: 目录下有client文件夹,文件夹里有foo.py文件。 需要import这个foo.py,发现提示找不到该文件 解决方法 ...任何的库都需要这么一个文件,python才会认为这是库。...
  • Python import搜索的路径顺序

    千次阅读 2018-10-11 19:21:52
    import的搜索顺序: 首先判断这个module是不是built-in即内建模块,如果是则引入内建模块,如果不是则在一个称为sys.path的list中寻找 sys.path在python脚本执行时动态生成,包括以下3个部分: 脚本执行的位置,即...
  • Python import以及os模块

    万次阅读 2016-07-06 09:31:55
    转自:http://jianpx.iteye.com/blog/486466 ... Import: 1. import 实际上是python虚拟机把当前的globals()和locals()传进__builtins__.__import__内置函数了,所以实际上干活的是那个
  • Python import 上级目录中的模块

    千次阅读 2019-01-30 19:23:14
    一般加上这段代码即可 import sys sys.path.append("..") #把上级目录加入到变量中 from module_name import class_name 或者直接模块 import module_name ...Python父目录、子目录相互调用 ...
  • Python import无法导入包问题

    万次阅读 2018-08-28 23:28:46
    一个文件夹下的同一级的文件,import 时却无法导入,怪哉?! This inspection detects names that should resolve but don't. Due to dynamic dispatch and duck typing, this is possible in a limited but useful ...
  • python 引入 导入 自定义模块, python 引入 导入 外部文件 项目中想使用以前的代码,或者什么样的需求致使你需要导入外部的包 如果是web 下,比如说django ,那么你新建一个app,把你需要导入的说用东东,都写到...
  • python import的用法

    千次阅读 2012-09-17 22:14:23
    pythonimport或者from...import来导入相应的模块。模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入到我们的程序中,我们就可以使用了。这...
  • python import site failed/no module named site

    千次阅读 2011-06-29 16:06:00
    python import site failed/no module named site Posted on 2011/03/08 by fung win7里面的pyrhon突然出问题了,启动是提示importerror:no module named site或者import site failed, use -v for trace
  • idapython import site failed

    千次阅读 2016-05-28 23:50:48
    打开IDA出现这个错误提示,问题根源是IDA找不到python,安装2.7版本的python并设置%PYTHONHOME%变量为python安装目录就可以了 如果已经安装了python可以在命令行下用echo %PYTHONHOME%看看配置有没有问题
  • python import os模块常用函数

    万次阅读 2018-04-11 16:22:58
    1、os.getcwd()函数 功能:获取当前目录,python 的工作目import os pwd = os.getcwd() pr...
  • Python import其他文件夹的文件

    千次阅读 2018-08-18 19:15:00
    一般情况下,import的文件和被import的文件在同一个路径下面,import也比较方便。如果这两个文件不在一个路径下面,import就比较麻烦了,需要在被import的文件路径下面新建一个__init__.py文件,可以是一个没有代码...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 390,193
精华内容 156,077
关键字:

pythonimport

python 订阅