把模块有关联的放在一个文件夹中 在python2中调用文件夹名会直接失败 在python3中调用会成功,但是调用不能成功的解决方案
把模块有关联的放在一个文件夹中
在python2中调用文件夹名会直接失败
在python3中调用会成功,但是调用不能成功
解决办法是:
在该文件夹下加入空文件__init__.py python2会把该文件夹整体当成一个包
然后编辑__init__.py
加入__all__ = ["功能名1","功能名2",...../或者类名也行]
再通过from . import 模块名
这样就可以调用包中那些模块功能了
#如果导入这个模块的方式是 from 模块名 import * ,那么仅仅会导入__all__的列表中包含的名字
举个栗子就清楚了:
当前我们有个包名为TestMsg,里面文件如下:
1.文件夹__pycache__:
__init__.cpython-35.pyc:
160d 0d0a 0072 f058 2d00 0000 e300 0000
0000 0000 0000 0000 0002 0000 0040 0000
0073 1d00 0000 6400 0067 0100 5a00 0064
0100 6402 006c 0100 6d02 005a 0200 0164
0300 5329 04da 0773 656e 646d 7367 e901
0000 0029 0172 0100 0000 4e29 03da 075f
5f61 6c6c 5f5f da00 7201 0000 00a9 0072
0500 0000 7205 0000 00f5 4b00 0000 2f68
6f6d 652f 7079 7468 6f6e 2f44 6573 6b74
6f70 2f70 7974 686f 6e30 36e6 9c9f 2f70
7974 686f 6ee5 9fba e7a1 802d 3130 2f30
322d e58c 852f 5465 7374 4d73 672f 5f5f
696e 6974 5f5f 2e70 79da 083c 6d6f 6475
6c65 3e01 0000 0073 0200 0000 0902
sendmsg.cpython-35.pyc
160d 0d0a 356e f058 3100 0000 e300 0000
0000 0000 0000 0000 0002 0000 0040 0000
0073 1000 0000 6400 0064 0100 8400 005a
0000 6402 0053 2903 6300 0000 0000 0000
0000 0000 0002 0000 0043 0000 0073 0e00
0000 7400 0064 0100 8301 0001 6400 0053
2902 4e7a 162d 2d2d 2d73 656e 646d 7367
2d74 6573 7431 2d2d 2d2d 2d29 01da 0570
7269 6e74 a900 7202 0000 0072 0200 0000
f54a 0000 002f 686f 6d65 2f70 7974 686f
6e2f 4465 736b 746f 702f 7079 7468 6f6e
3036 e69c 9f2f 7079 7468 6f6e e59f bae7
a180 2d31 302f 3032 2de5 8c85 2f54 6573
744d 7367 2f73 656e 646d 7367 2e70 79da
0574 6573 7431 0100 0000 7302 0000 0000
0172 0400 0000 4e29 0172 0400 0000 7202
0000 0072 0200 0000 7202 0000 0072 0300
0000 da08 3c6d 6f64 756c 653e 0100 0000
7300 0000 00
2.__init__.py
__all__ = ["sendmsg"] from . import sendmsg
3.__init__.pyc
03f3 0d0a 0072 f058 6300 0000 0000 0000
0002 0000 0040 0000 0073 1d00 0000 6400
0067 0100 5a00 0064 0100 6402 006c 0100
6d02 005a 0200 0164 0300 5328 0400 0000
7407 0000 0073 656e 646d 7367 6901 000028 0100 0000 5200 0000 004e 2803 0000
0074 0700 0000 5f5f 616c 6c5f 5f74 0000
0000 5200 0000 0028 0000 0000 2800 000028 0000 0000 7313 0000 0054 6573 744d
7367 2f5f 5f69 6e69 745f 5f2e 7079 7408
0000 003c 6d6f 6475 6c65 3e01 0000 0073
0200 0000 0902
4.recvmsg.py
def test2():
print("-----recvmsg-test2---")
5.sendmsg.py
def test1():
print("----sendmsg-test1-----")
6.sendmsg.pyc
03f3 0d0a 356e f058 6300 0000 0000 0000
0001 0000 0040 0000 0073 0d00 0000 640084 0000 5a00 0064 0100 5328 0200 0000
6300 0000 0000 0000 0001 0000 0043 0000
0073 0900 0000 6401 0047 4864 0000 5328
0200 0000 4e73 1600 0000 2d2d 2d2d 7365
6e64 6d73 672d 7465 7374 312d 2d2d 2d2d
2800 0000 0028 0000 0000 2800 0000 0028
0000 0000 7312 0000 0054 6573 744d 7367
2f73 656e 646d 7367 2e70 7974 0500 0000
7465 7374 3101 0000 0073 0200 0000 0001
4e28 0100 0000 5200 0000 0028 0000 0000
2800 0000 0028 0000 0000 7312 0000 0054
6573 744d 7367 2f73 656e 646d 7367 2e70
7974 0800 0000 3c6d 6f64 756c 653e 0100
0000 7300 0000 00
我们还有一个文件名为infordisplay.py
def test3():
print("-----infordisplay-test3----")
摆放方式如下:

TestMsg文件夹下文件

__pycache__文件夹下文件

源码已给出 亲测有效 建议看此文的同学都能多多尝试!!!祝各位工作顺利 合家幸福 学习更上一层楼
把模块有关联的放在一个文件夹中 在python2中调用文件夹名会直接失败 在python3中调用会成功,但是调用不能成功的解决方案的更多相关文章
- Nginx 模块开发(1)—— 一个稍稍能说明问题模块开发 Step By Step 过程
1. Nginx 介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/S ...
- Python遍历一个文件夹下有几个Excel文件及每个Excel文件有几个Sheet
一. 解决问题: 工作中常会遇到合并Excel文件的需求,Excel文件数量不确定,里面的Sheet 数量是可变的,Sheet Name是可变的,所以,需要用到遍历一个文件夹下有几个Excel文件,判 ...
- 每天一个linux命令(31): /etc/group文件详解
Linux /etc/group文件与/etc/passwd和/etc/shadow文件都是有关于系统管理员对用户和用户组管理时相关的文件.linux /etc/group文件是有关于系统管理员对用户 ...
- 为什么不能把委托(delegate)放在一个接口(interface)当中?
stackoverflow上有人问,为什么不能把委托放在一个接口当中? 投票最多的第一个答案第一句话说,“A Delegate is just another type, so you don't g ...
- python 导入模块的坑。为什么整个项目能运行,单独运行某个文件模块就报错?多层目录不同文件夹怎么导入?
一些文章介绍了python不同目录怎么导入问题,但py文件运行起点却从来没有文章说过!这是相当重要的!! 这个连接是网上99%的所讲的导入 https://www.cnblogs.com/luoye0 ...
- python 经验:把全局变量放在一个类中
注:红色是我增加的注释 add by zhj:其实python中的import, from-import语句是创建新的同名变量指向引入的模块和模块属性,这也就解释了下面的情况. 我们应尽量不用全局变量 ...
- 【转】每天一个linux命令(31): /etc/group文件详解
原文网址:http://www.cnblogs.com/peida/archive/2012/12/05/2802419.html Linux /etc/group文件与/etc/passwd和/et ...
- Python模块详解以及import本质,获得文件当前路径os.path.abspath,获得文件的父目录os.path.dirname,放到系统变量的第一位sys.path.insert(0,x)
模块介绍 1.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test) 包:用来从逻 ...
- MongoDB 倾向于将数据都放在一个 Collection 下吗?
不是这样的. Collection 的单个 doc 有大小上限,现在是 16MB,这就使得你不可能把所有东西都揉到一个 collection 里.而且如果 collection 结构过于复杂,既会影响 ...
随机推荐
- CentOS服务器的加固方案
>>>Centos账户安全 对Centos的加固首先要控制用户的权限,用户权限主要涉及到/etc下的/passwd,/shadow和/group三个文件 /passwd文件主要是存储 ...
- django 取model字段的verbose_name值
Django 模型中的verbose_name我们常常可能需要使用.比如将数据库里面的数据导出成csv文件,那么csv文件的表头的名字可以通过取每个字段的verbose_name来获取,数据可以通过q ...
- redis key/value 出现\xAC\xED\x00\x05t\x00\x05
1.问题现象: 最近使用spring-data-redis 和jedis 操作redis时发现存储在redis中的key不是程序中设置的string值,前面还多出了许多类似\xac\xed\x00\x ...
- BZOJ3160:万径人踪灭(FFT,Manacher)
Solution $ans=$回文子序列$-$回文子串的数目. 后者可以用$manacher$直接求. 前者设$f[i]$表示以$i$为中心的对称的字母对数. 那么回文子序列的数量也就是$\sum_{ ...
- 1034. [ZJOI2008]泡泡堂【贪心】
Description 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表 队由n名选手组成,比赛的项目是老少咸宜的网络游戏泡泡堂.每一场比赛前,对 ...
- 【bzoj 4154】[Ipsc2015]Generating Synergy
题目 大概已经掌握熟练码出\(kdt\)的技能了 发现距离子树根节点\(x\)不超过\(l\)的点可以用两种方式来限制,首先\(dfs\)序在\([dfn_x,dfn_x+sum_x)\)中,深度自然 ...
- LeetCode872. Leaf-Similar Trees
自己的代码: # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = ...
- Kafka设计解析(五)Kafka性能测试方法及Benchmark报告
转载自 技术世界,原文链接 Kafka设计解析(五)- Kafka性能测试方法及Benchmark报告 摘要 本文主要介绍了如何利用Kafka自带的性能测试脚本及Kafka Manager测试Kafk ...
- POJ3268(Dijkstra_邻接矩阵)
https://vjudge.net/problem/POJ-3268 题目大意: n个农场的n头奶牛将前往x农场,要选择一条来回时间最短的路径. (一头牛的返回路线可能不同于她最初去派对的路线,因为 ...
- 如何使用eclipse运行简单的java程序
打开eclipse,选择“file——new——Java project” 为我们的java项目取一个名字,然后点击完成. 这时候左侧列表就有了我们刚才新建的java项目,点开项目,在src目 ...