文档章节

python 不同文件夹中模块的引用

不最醉不龟归
 不最醉不龟归
发布于 2016/11/01 13:00
字数 337
阅读 396
收藏 0

python模块包调用问题  

A

   |----- __init__.py

   |-----  a.py

   |---------B

         |--------- __init__.py

         |---------b.py

   |---------C

         |--------- __init__.py

         |--------c.py

如图所示结构树,B,C同属于A的子目录,但是B,C之间是平行的。。。

b.py,c.py代码分别如下:

b.py:

def b_hello():
    print "B_HELLO"
c.py:

def c_hello():
    print "C_HELLO"

如果A中a.py要调用B中或者C中py,则可以如下方式调用(以B为例)

from B import b

b.b_hello()

运行结果:B_HELLO

但是如果是B中或者C中py调用B中或C中呢?

这个时候如果我们依旧用如上所说调用,则会报错(这里是b.py调用c.py)

>>>

Traceback (most recent call last):
  File "E:\testnow\A\B\b.py", line 1, in <module>
    from C import c
ImportError: No module named C

所以,这种方法不行,那如何做呢,如下

import sys
sys.path.append('E:\\testnow\\A\\C')
import c
def b_hello():
    print "B_HELLO"
c.c_hello()
用这种方法,输出结果是:C_HELLO

也即刚才上面的“from 文件夹 import 模块名”只适用于父目录调用子目录的情况。。。而第二种方法则对所有的情况都适用,包括两个模块甚至都不在一个盘的情况。。。这里需要注意的一点是:sys.path添加目录时注意是在windows还是在Linux下,windows下需要‘\\’否则会出错。。。。。。。(我在这点上走了很久的弯路。。。)

本文转载自:

上一篇: TestNG框架
不最醉不龟归
粉丝 23
博文 435
码字总数 454608
作品 0
深圳
程序员
私信 提问
python基础name&direction

some problem in python 1. main & name 有人一句话概括了这段代码的意义: ”Make a script both importable and executable“ 意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该...

habits
2017/08/01
0
0
看书 Python 源码分析笔记 (十一) 模块加载机制

第14章 Python 模块的动态加载机制 现实程序通常由多个模块构成, 模块之间存在引用和交互. 本章剖析如何加载模块, 引用另一模块中的功能. import 命令 import sys 被编译后的字节指令示例: 这...

刘军兴
2015/12/28
0
0
Python3 与 C# 扩展之~模块专栏

代码裤子:https://github.com/lotapp/BaseCode/tree/maste 在线编程:https://mybinder.org/v2/gh/lotapp/BaseCode/master 在线预览:http://github.lesschina.com/python/base/module/模块......

毒逆天
2018/07/04
0
0
`__pycache__` 是什么

为了提高模块加载的速度,每个模块都会在 文件夹中放置该模块的预编译模块,命名为 , 是模块的预编译版本编码,一般都包含 Python 的版本号。例如在 CPython 发行版 3.4 中, 文件的预编译文...

xinet
2018/01/17
0
0
Python类、模块、包的区别

类 类的概念在许多语言中出现,很容易理解。它将数据和操作进行封装,以便将来的复用。 模块 模块,在Python可理解为对应于一个文件。在创建了一个脚本文件后,定义了某些函数和变量。你在其...

幕三少
2018/06/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

C 语言 二级指针的使用

#include <stdio.h>#include <stdlib.h>typedef struct node Node;struct node {int data;struct node* next;struct node* prev;};Node head;Node* insert(Node......

小张525
33分钟前
2
0
【大数据技术】——Hadoop(1)

什么是大数据 基本概念 《数据处理》 在互联网技术发展到现今阶段,大量日常、工作等事务产生的数据都已经信息化,人类产生的数据量相比以前有了爆炸式的增长,以前的传统的数据处理技术已经...

须臾之余
47分钟前
6
0
比特币从地址逆向计算私钥

区块链 区块链简介 说到比特币,就不得不提区块链。那什么是区块链呢? 区块链本质是一个数据集,只不过数据的组织采用了比较特殊的方式,就是把数据拆分为一块一块的小数据集。 为什么要进行...

trayvon
今天
1
0
TypeScript……真香

写前端或者用 node 写命令行小工具一直采用的 es6 的语法,对于 TypeScript 则是秉持敬而远之的态度,毕竟团队中多推广一门语言所需要花费的精力都是让人望而却步的。所以对于 JavaScript 的...

郁也风
今天
3
0
shell基本案例

1、自定义rm linux系统的rm命令太危险,一不小心就会删除掉系统文件。 写一个shell脚本来替换系统的rm命令,要求当删除一个文件或者目录时,都要做一个备份,然后再删除。下面分两种情况,做...

寰宇01
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部