python之路径导入

问题:

最近在学习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)
输出:

 


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

print(sys.path

输出:

 

最后,通过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
时间: 2024-07-31 14:29:03

python之路径导入的相关文章

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

其实也是在写自己项目的时候遇到的,以前也遇到了但是一直采取的是回避的策略,这次总算弄清楚所以总结一下. 这个项目的顶级目录是medivac,他本身是一个python模块. 熟悉flask的人都知道,在写一个flask项目的时候,我们常常将一个模块的app初始化放在根目录的__init__.py文件中. 然后可以很方便的把其它需要路由的模块都引入到这个__init__.py中达到自动加载并且路由的效果. 另外也可以使用一个叫做flask蓝图的东西(blueprint),将模块细分. 如果是在__i

python 根据路径导入模块

Import python module NOT on path http://stackoverflow.com/questions/10161568/import-python-module-not-on-path 常规做法: [python] view plain copy import sys sys.path.append('C:/full/path') from foo import util,bar 而要直接通过路径 [python] view plain copy import 

python的相对路径导入问题

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

python模块以及导入出现ImportError: No module named &#39;xxx&#39;问题

python模块以及导入出现ImportError: No module named 'xxx'问题 python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模 块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用 如果你要使用的模块(py文件)和当前模块在同一目录,只要import相应的文件名就好,比 如在a.py中使用b.py:  import b 但是如果要import一个不同目录的文件(例如b.py)该怎么做

Python搜索路径

转自:http://www.jbxue.com/article/15324.html 在python编程中,模块的导入需要一个叫做"路径搜索"的过程.即在文件系统"预定义区域"中查找 mymodule.py文件(如果你导入 mymodule 的话).这些预定义区域只不过是你的 Python 搜索路径的集合. 默认搜索路径是在编译或是安装时指定的.它可以在一个或两个地方修改.一个是启动 Python 的 shell 或命令行的 PYTHONPATH 环境变量. 该变量

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

一.模块 1.模块简介 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能.这也是使用python标准库的方法. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块. 2.模块的引入 在Python中用关键字import来引入某个模块,比如要引用模

Python 之模块导入

Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入.导入模块有一下几种方法: import module from module.xx.xx import xx from module.xx.xx import xx as rename   from module.xx.xx import * 导入模块其实就是告诉Python解释器去解释那个py文件 导入一个py文件,解释器解释该py文件 导入一个包,解释器解释该包下的 __i

python 模块的导入和使用

来看一看python的模块导入和是用 [[email protected] dist-packages]# cat indentation.py #!/usr/bin/enb python version = 'v1.0' author = 'Madon' def sayHi (n):   print 'hi , this is a module.',n //这里说明一下,我写的这个模块.2-3行使用的变量,用户调用version和author输出对应内容. //第四行使用sayHi 加用户输入

浅谈 Python 的模块导入

浅谈 Python 的模块导入 本文不讨论 Python 的导入机制(底层实现细节),仅讨论模块与包,以及导入语句相关的概念.通常,导入模块都是使用如下语句: import ... import ... as ... from ... import ... from ... import ... as ... 一般情况下,使用以上语句导入模块已经够用的.但是在一些特殊场景中,可能还需要其他的导入方式.例如 Python 还提供了 __import__ 内建函数和 importlib 模块来实现动