pythonpath_由PYTHONPATH谈起
PYTHONPATH是Python搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找。
使用下面的代码可以打印PYTHONPATH:
print(os.sys.path)
我的某个项目的PYTHONPATH如下:
[
'D:\\Python3\\workspace\\PythonLab\\src',
'D:\\aptana3\\plugins\\org.python.pydev_2.7.0.2012080220\\pysrc',
'D:\\Python3\\python33.zip', 'D:\\Python3\\DLLs',
'D:\\Python3\\lib',
'D:\\Python3',
'D:\\Python3\\lib\\site-packages'
]
比如我使用下面的import语句:
import urllib
Python解释器会逐个从上面的路径列表选出一个路径然后搜索urllib模块直到找到为止。这里最后在 D:\Python3\lib 下找到,如下图:
而D:\Python3\Lib\site-packages目录下全部是第三方Python模块,比如我之前安装的xlrd模块(处理Excel的Python模块):
与PYTHONPATH有关的一个问题是Eclipse下使用PyDev开发Python可能遇到的Unresolved Import问题,其解决方法就是设置项目的PYTHONPATH,将要导入的模块所在的目录添加到PYTHONPATH中:
或者全局设置某个Python解释器的PYTHONPATH:
在urllib模块目录下有下面这些文件:
request是urllib模块下的一个子模块,所以我们可以这样导入request模块:
import urllib.request
或者:
from urllib import request
而urlopen是urlrequest模块下的一个函数,我们可不可以这样导入
import urllib.request.urlopen
然后像下面这样直接调用urlopen呢?
resp = urlopen('http://baidu.com')
答案是不能,会报下面的错:
Traceback (most recent call last):
File "D:\Python3\workspace\PythonLab\src\Utilities.py", line 13, inimport urllib.request.urlopen
ImportError: No module named 'urllib.request.urlopen'; urllib.request is not a package
即没有一个模块的名称是”urllib.request.urlopen",那要如何导入某个函数呢,答案是使用from [Module Name] import [Function Name]语法,比如下面:
from urllib.request import urlopen
然后直接调用上面的urlopen函数就没有任何问题了。这种方法的缺陷就是这样导入之后,urlopen就定死了,你不能再写一个叫urlopen的函数,不然会覆盖这个函数。但我们也可以不导入函数,而使用函数的“全限名”(或者导入request子模块后,通过 request.urlopen('http://baidu.com') )来调用:
urllib.request.urlopen('http://baidu.com')
上面得到的教训是:
使用import xx语法时,xx只能是模块路径(一个模块一般是指一个package或者一个以.py为后缀的文件,不一般的情况包括.pth、.dll以及其他扩展形式)。
而且一般只有package模块下面才可以包含子模块(不知道准确不准确,DLL模块是否可以包含其他子模块?)
以上难免有遗漏疏忽之处,还望大家指正。
pythonpath_由PYTHONPATH谈起相关推荐
- anaconda pythonpath_关于python:Anaconda:永久包含外部包(如在PYTHONPATH中)
我知道如何使用conda install在Anaconda中安装软件包,以及如何在手册中描述的PyPi上安装软件包. 但是,我如何永久地将软件包/文件夹包含在Anaconda环境的PYTHONPATH ...
- pythonpath_设置Python的PYTHONPATH环境变量
刚开始学习Python的时候,自己写的模块所在路径要在每一次启动Python时,进行手动添加路劲(使用import加载Python模块时的路径).现在学会了另外一个方法,通过设置PYTHONPATH环 ...
- pythonpath_环境变量:PYTHONPATH
大家在编写模块的时候,总会遇到这么一个问题:把模块放到安装目录下的Lib目录里面就可以正常使用了,可是过了几天重装了Python,自己写的模块也没了,然后就是感觉身体被掏空,心情极度难受,精神非常崩溃 ...
- 浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式 pth中的路径加载使用
首先xxx.pth文件里面会书写一些路径,一行一个. 将xxx.pth文件放在特定位置,则可以让python在加载模块时,读取xxx.pth中指定的路径. Python客栈送红包.纸质书 有时,在用i ...
- pytorch保存模型pth_浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
我们经常会看到后缀名为.pt, .pth, .pkl的pytorch模型文件,这几种模型文件在格式上有什么区别吗? 其实它们并不是在格式上有区别,只是后缀不同而已(仅此而已),在用torch.save ...
- 浅谈MySQL存储引擎-InnoDBMyISAM
浅谈MySQL存储引擎-InnoDB&MyISAM 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式 ...
- 【大话设计模式】——浅谈设计模式基础
初学设计模式给我最大的感受是:人类真是伟大啊!单单是设计模式的基础课程就让我感受到了强烈的生活气息. 个人感觉<大话设计模式>这本书写的真好.让貌似非常晦涩难懂的设计模式变的生活化.趣味化 ...
- 谈 三层结构与MVC模式的区别
谈 三层结构与MVC模式的区别 在CSDN和园子里有朋友谈到三层与MVC的区别,以前也有人抛出这个问题,本人对来公司面试的朋友也偶乐会提这方面的问题. 那么我也来讲讲我对这两者的理解吧. ...
- 学校计算机机房好处,浅谈学校计算机机房维护
浅谈学校计算机机房维护 现在的学校机房都配置了数量较多的计算机,而且机房的使用非常频繁.对于怎样维护好计算机,特别是计算机软件系统,对广大计算机教师来说是一个很重要且非常现实的问题.下面就本人在 ...
最新文章
- 机器学习笔试题精选(四)
- SSO 单点登录会话管理
- 【Linux】一步一步学Linux——nstat命令(190)
- PIC16F877矩阵键盘的识别
- 海龟画图 python太阳花_python 简单的绘图工具turtle使用详解
- 软件测试基础知识(一)
- OpenCV中的图像插值示例
- python wlsxwriter_python xlsxwriter模块的使用
- 3D数学之镜像、切变
- Head First设计模式读书笔记一 策略模式
- 适合计算机课堂玩的游戏,几个课堂小游戏(能活跃课堂气氛)
- 创新创业技术路线怎么写_【精选】如何撰写创新创业项目申请书.ppt
- 弱电工程项目管理软件
- win10 联想键盘快捷键关闭_win10系统关闭快捷键的操作方法
- GCTF 2017 Web 补题 By Assassin [持续更新--抄大佬wp]
- Web前端开发技术栈(前端干货)
- 为什么sqlserver创建存储过程成功,却找不到这个存储过程呢
- MySQL 加锁规则
- Codeforces Round #768 (Div. 1)(A-C)
- 编程大师竟“玩”出了不像 C 的 C 程序