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谈起相关推荐

  1. anaconda pythonpath_关于python:Anaconda:永久包含外部包(如在PYTHONPATH中)

    我知道如何使用conda install在Anaconda中安装软件包,以及如何在手册中描述的PyPi上安装软件包. 但是,我如何永久地将软件包/文件夹包含在Anaconda环境的PYTHONPATH ...

  2. pythonpath_设置Python的PYTHONPATH环境变量

    刚开始学习Python的时候,自己写的模块所在路径要在每一次启动Python时,进行手动添加路劲(使用import加载Python模块时的路径).现在学会了另外一个方法,通过设置PYTHONPATH环 ...

  3. pythonpath_环境变量:PYTHONPATH

    大家在编写模块的时候,总会遇到这么一个问题:把模块放到安装目录下的Lib目录里面就可以正常使用了,可是过了几天重装了Python,自己写的模块也没了,然后就是感觉身体被掏空,心情极度难受,精神非常崩溃 ...

  4. 浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式 pth中的路径加载使用

    首先xxx.pth文件里面会书写一些路径,一行一个. 将xxx.pth文件放在特定位置,则可以让python在加载模块时,读取xxx.pth中指定的路径. Python客栈送红包.纸质书 有时,在用i ...

  5. pytorch保存模型pth_浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式

    我们经常会看到后缀名为.pt, .pth, .pkl的pytorch模型文件,这几种模型文件在格式上有什么区别吗? 其实它们并不是在格式上有区别,只是后缀不同而已(仅此而已),在用torch.save ...

  6. 浅谈MySQL存储引擎-InnoDBMyISAM

    浅谈MySQL存储引擎-InnoDB&MyISAM 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式 ...

  7. 【大话设计模式】——浅谈设计模式基础

    初学设计模式给我最大的感受是:人类真是伟大啊!单单是设计模式的基础课程就让我感受到了强烈的生活气息. 个人感觉<大话设计模式>这本书写的真好.让貌似非常晦涩难懂的设计模式变的生活化.趣味化 ...

  8. 谈 三层结构与MVC模式的区别

    谈 三层结构与MVC模式的区别 在CSDN和园子里有朋友谈到三层与MVC的区别,以前也有人抛出这个问题,本人对来公司面试的朋友也偶乐会提这方面的问题.     那么我也来讲讲我对这两者的理解吧.    ...

  9. 学校计算机机房好处,浅谈学校计算机机房维护

    浅谈学校计算机机房维护    现在的学校机房都配置了数量较多的计算机,而且机房的使用非常频繁.对于怎样维护好计算机,特别是计算机软件系统,对广大计算机教师来说是一个很重要且非常现实的问题.下面就本人在 ...

最新文章

  1. 机器学习笔试题精选(四)
  2. SSO 单点登录会话管理
  3. 【Linux】一步一步学Linux——nstat命令(190)
  4. PIC16F877矩阵键盘的识别
  5. 海龟画图 python太阳花_python 简单的绘图工具turtle使用详解
  6. 软件测试基础知识(一)
  7. OpenCV中的图像插值示例
  8. python wlsxwriter_python xlsxwriter模块的使用
  9. 3D数学之镜像、切变
  10. Head First设计模式读书笔记一 策略模式
  11. 适合计算机课堂玩的游戏,几个课堂小游戏(能活跃课堂气氛)
  12. 创新创业技术路线怎么写_【精选】如何撰写创新创业项目申请书.ppt
  13. 弱电工程项目管理软件
  14. win10 联想键盘快捷键关闭_win10系统关闭快捷键的操作方法
  15. GCTF 2017 Web 补题 By Assassin [持续更新--抄大佬wp]
  16. Web前端开发技术栈(前端干货)
  17. 为什么sqlserver创建存储过程成功,却找不到这个存储过程呢
  18. MySQL 加锁规则
  19. Codeforces Round #768 (Div. 1)(A-C)
  20. 编程大师竟“玩”出了不像 C 的 C 程序

热门文章

  1. 基于Android的旅游助手app酒店景点预订系统(计算机毕业设计)
  2. java 把map转换成json_map转换成JSON的3种方法
  3. 网红扎推背后的映客:78个内容审核人员把关3680万主播
  4. Android 获取手机硬件信息
  5. 《六周玩转云原生》- 云原生下的DevOps与持续交付
  6. EasyRecovery15macOS苹果电脑数据恢复软件
  7. cmd启动MySQL服务显示服务名无效,MySQL服务无法启动
  8. 微信小程序 -- 消息订阅实现
  9. Pinpoint安装
  10. 微信公众号接入Chat GPT实现人工智能对话聊天(java代码实现)