问题:

最近在学习import的时候,发现不像import xxx,或者from xxx import ooo

这样简单。比如,看下面这个图:

要导入才能在te.py调用pre.tab.py??

直接导入:

import pre_tab
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/laonanhai/shop_store/test/te.py", line 14, in <module>
import pre_tab
ImportError: No module named 'pre_tab'

知识点:

通过看视频,学到了下面两点:

1. os.path.abspath(__file__) 返回当前文件的绝对路径
在te.py文件下:
import os
x = os.path.abspath(__file__)
print(x)
输出:
C:\Python34\python3.exe C:/Users/Administrator/PycharmProjects/laonanhai/shop_store/test/te.py
C:\Users\Administrator\PycharmProjects\laonanhai\shop_store\test\te.py Process finished with exit code 0

2.os.path.dirname()  返回当前文件的上一层路径
在te.py文件下:
x1 = os.path.dirname(os.path.dirname(x))
print(x1)
sys.path.append(x1) print(sys.path

输出:

C:\Python34\python3.exe C:/Users/Administrator/PycharmProjects/laonanhai/shop_store/test/te.py
C:\Users\Administrator\PycharmProjects\laonanhai\shop_store\test\te.py
C:\Users\Administrator\PycharmProjects\laonanhai\shop_store
['C:\\Users\\Administrator\\PycharmProjects\\laonanhai\\shop_store\\test', 'C:\\Python34\\lib\\site-packages\\pip-8.1.2-py3.4.egg', 'C:\\Users\\Administrator\\PycharmProjects\\laonanhai', 'C:\\Windows\\SYSTEM32\\python34.zip', 'C:\\Python34\\DLLs', 'C:\\Python34\\lib', 'C:\\Python34', 'C:\\Python34\\lib\\site-packages', 'C:\\Users\\Administrator\\PycharmProjects\\laonanhai\\shop_store']
最后,通过print(sys.path)可以看到,
C:\Users\Administrator\PycharmProjects\laonanhai\shop_store路径已经加入sys.path
额外收获

在pre_tab.py文件下:
"""
C:\Users\Administrator\PycharmProjects\laonanhai\shop_store\pre_tab.py
"""
print("AA")
竟然,曝错了!!!
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 3-4: truncated \UXXXXXXXX escape

后来参考了

http://blog.csdn.net/wlsyn/article/details/49613867原来是文件路径中,反斜杠 \u 报的错,在反斜杠后面再加一个反斜杠转义了就行了,经测试,注释后的代码不报错,去掉注释,也能正常读写文件

随笔补充:关于__import__
obj = __import__("lib.manager")
print(obj) #没有导入manager.py
#<module 'lib' from 'C:\\Users\\Administrator\\PycharmProjects\\laonanhai\\day6_test\\lib\\__init__.py'>
obj.order() #AttributeError: 'module' object has no attribute 'order'

obj1 = __import__("lib.manager", fromlist=True) #表示按路径连接方式导入
print(obj1) #导入manager
#<module 'lib.manager' from 'C:\\Users\\Administrator\\PycharmProjects\\laonanhai\\day6_test\\lib\\manager.py'>
obj1.order() #成功执行lib下的manager.py的order()方法


出处:http://www.cnblogs.com/0zcl

python之路径导入的更多相关文章

  1. python 相对路径导入 与 绝对路径导入

    我的理解: 假设有一个文件夹 app 若 app 下有app/__init__.py文件,则此 app 被视作一个 package,而 app 下的其他文件/文件夹被视作 module 我们知道,pa ...

  2. 关于python项目路径导入自己写的库出错的一点思考

    其实也是在写自己项目的时候遇到的,以前也遇到了但是一直采取的是回避的策略,这次总算弄清楚所以总结一下. 这个项目的顶级目录是medivac,他本身是一个python模块. 熟悉flask的人都知道,在 ...

  3. python 根据路径导入模块

    Import python module NOT on path http://stackoverflow.com/questions/10161568/import-python-module-no ...

  4. python的相对路径导入问题

    用python做项目,如果项目大了,或者想更好的管理程序,总是要使用包.包解决了命名冲突的问题. 今天在使用python的相对路径导入的时候,遇到了不少的问题. 包导入情形: src/    __in ...

  5. 6.python模块(导入,内置,自定义,开源)

    一.模块 1.模块简介 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能.这也是使用python标准库的方法. 类似于函数式编程和面向过 ...

  6. [python]关于在python中模块导入问题追加总结

    [背景] 最近在写程序时,我使用的eclipse编辑器运行都没有问题,然后部署到自动化环境上却偏偏报找不到相应模块问题,现在对该问题在之前的贴子上追加总结 原帖子:[python]关于python中模 ...

  7. Python模块及其导入

    一.模块 1.模块的定义: 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少, 很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件 ...

  8. Python模块(导入,内置,自定义,开源)

    目录: 模块介绍 自定义模块 内置模块 开源模块 一.模块 1.模块简介 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能.这也是使用p ...

  9. 13、python的路径处理

    前言:本文主要介绍python中路径的处理,包括os模块和有关的2个魔法变量. 一.os模块 python里面的os模块有许多方法可以让我们通过代码实现创建,删除和更改目录,具体如下: os.getc ...

随机推荐

  1. Rust初步(六):在C#中使用Rust组件

    上一篇文章,我们通过实例比较了一下C#和Rust的性能表现,应该说在Release模式下面,Rust进行计算密集型的运算还是有些比较明显的优势的.那么,我们有没有可能,在C#中做一些快速应用开发,而一 ...

  2. 编写简单的ramdisk(有请求队列)

    前言 前面用无请求队列实现的ramdisk的驱动程序虽然申请了请求队列,但实际上没用上,因为ramdisk不像实际的磁盘访问速度慢需要缓存,ramdisk之间使用内存空间,所以就没用请求队列了.本文将 ...

  3. MySQL半同步复制

    从MySQL5.5开始,MySQL以插件的形式支持半同步复制.如何理解半同步呢?首先我们来看看异步,全同步的概念 异步复制(Asynchronous replication) MySQL默认的复制即是 ...

  4. canvas 图片拖拽旋转之二——canvas状态保存(save和restore)

    引言 在上一篇日志“canvas 图片拖拽旋转之一”中,对坐标转换有了比较深入的了解,但是仅仅利用坐标转换实现的拖拽旋转,会改变canvas坐标系的状态,从而影响画布上其他元素的绘制.因此,这个时候需 ...

  5. Cesium原理篇:3最长的一帧之地形(1)

    前面我们从宏观上分析了Cesium的整体调度以及网格方面的内容,通过前两篇,读者应该可以比较清楚的明白一个Tile是怎么来的吧(如果还不明白全是我的错).接下来,在前两篇的基础上,我们着重讨论一下地形 ...

  6. Date, TimeZone, MongoDB, java中date的时区问题

    打印new Date(),Fri Aug 12 13:37:51 CST 2016. 显示Asia/Shanghai的时区,但是date toString 的时区简写却是CST.更坑爹的是,Googl ...

  7. 常用HiveQL总结

    最近在用Hive做多维数据分析,总结一些常用HiveQL命令. 1. 建表 以纯文本数据建表: create table default.calendar_table ( day_cal date , ...

  8. 分离与继承的思想实现图片上传后的预览功能:ImageUploadView

    本文要介绍的是网页中常见的图片上传后直接在页面生成小图预览的实现思路,考虑到该功能有一定的适用性,于是把相关的逻辑封装成了一个ImageUploadView组件,实际使用效果可查看下一段的git效果图 ...

  9. HighchartsNET快速图表控件-开源

    前言: HighchartsNET快速图表控件,基于Highcharts的asp.net web控件.只需几行代码你就能快速生成一个图表. 从此不再担心图表复杂.简单几行代码就可以搞定,节省大量工作时 ...

  10. ASP.NET Core开发-如何配置Kestrel 网址Urls

    ASP.NET Core中如何配置Kestrel Urls呢,大家可能都知道使用UseUrls() 方法来配置. 今天给介绍全面的ASP.NET Core 配置 Urls,使用多种方式配置Urls. ...