美文网首页
Python module之搜索路径

Python module之搜索路径

作者: Vophan | 来源:发表于2019-03-17 13:20 被阅读0次

最近,好多事,新学期课又是出奇的多,于是我就好久没更新了,今天周末,我决定将最近的学习所得整理一下,POST上来。
首先是,最近一直在做有关web开发的事,所以最近几篇主要关于django框架的使用,以及python的一些奇淫技巧,而后,我会将SVM的文章更新上来(真是不务正业啊,哈哈哈)

什么是搜索路径

其实,但凡学过C语言,或者其他随便一种语言的都能理解什么是搜索路径。
比如说,我们在学习java的时候,我们需要配置环境,将lib文件夹加入到path路径中,而这个path路径,其实就可以理解为搜索路径。
而python中的搜索路径,就是存放module的路径,用代码表示的话就是:

import sys
print(sys.path)

这个sys.path就是搜索路径。

搜索路径是干什么的呢?

为什么我们要将java的lib放到path中,就是因为我们在调用java的库时,可以在这个路径中找得到。
python的搜索路径也是这样:
他是一个list,里面存放的是许多绝对路径,当我们import一个module的时候,python就会按照我们这个list中的顺序查找每一个路径。

什么时候需要修改搜索路径呢?

举个例子:
我们在django中,在view中import自己的python文件,比如说就叫做login.py,然后在相同的文件夹中,我们需要在编写一个与django分离开的爬虫,比如说就叫做spider.py吧;但是,我们的爬虫需要调用login这个脚本,但是这时候就出问题了。

from .login import login
from apscheduler.scheduler import Scheduler
import pickle
#---------------------------
#  下面代码省略
#---------------------------

这时候就会报错:

ModuleNotFoundError: No module named '__main__.login'; '__main__' is not a package

这时候,我们需要补充一个知识点:

python对于module的引用分为两种,一种叫做相对引用,一种叫做绝对引用,而我们绝大多数的引用都是相对引用。比如说,我们前面写的from .login import login
但是,相对引用是依赖于python的自建变量__name__的。

所以,我们来从__name__的角度分析一下,为什么报错?
首先,如果,我们是从spider.py import login 那么,login这时候的__name__就是__main__.login,但是根本没有这个东西,因为在python中,如果想要建立一个package,必须在他所在的目录下面创建__init__.py文件,可是__main__根本就不是一个文件夹,所以这样的写法是错误的。
所以,要解决这个办法,有两种办法:

  • 再创建一个py文件,在这里面调用spider,这样spider就不是__main__了。
  • 当然,我重点要说的是这一个,也就是修改搜索路径:
import sys, os
ROOT_PATH = os.path.abspath(os.path.join(os.getcwd(), ".."))
sys.path.append(ROOT_PATH)
from sword.login import login

这样,我们的搜索路径中就有了sword,我们就可以这样引用了。

等你接纳我的那一天

相关文章

  • Python module之搜索路径

    最近,好多事,新学期课又是出奇的多,于是我就好久没更新了,今天周末,我决定将最近的学习所得整理一下,POST上来。...

  • sys.path和os

    1.sys.path——动态地改变Python搜索路径 如果Python中导入的package或module不在环...

  • pymol module 添加到 python 的 import

    先查看 pymol module 的路径 将 pymol module 的路径添加到 python import ...

  • python模块搜索路径的方式

    永久设置python搜索路径:PYTHONPATH、.pth文件、pycharm设置 临时设置python搜索路径...

  • import

    普通 Python 模块的搜索路径 在当前模块所在路径中搜索导入模块 在环境变量 PYTHONPATH 指定的路径...

  • 模块

    1.搜索路径 import导入模块时,如果报importError:No module named XXX 说明解...

  • Python-添加库

    pip添加库 Pycharm添加库 查看Python安装路径 查看Python搜索模块路径集 1. pip pip...

  • 模块--操作系统 sys !!!

    1.导入模块 2.查看Python模块搜索路径 3.添加自定义的Python模块搜索路径 -- 添加到最后 4.添...

  • 2018-11-14 Python项目相关路径配置

    python相关环境变量 PYTHONPATH : PYTHONPATH是Python搜索路径,默认我们impor...

  • caffe之python

    caffe中运行python代码,一般来说,python有自己的模块搜索路径,即sys.path,这些路径是添加在...

网友评论

      本文标题:Python module之搜索路径

      本文链接:https://www.haomeiwen.com/subject/pgvymqtx.html