python导入模块时对路径的处理

导入模块时的理论部分:

如果自定义一个模块,导入的时候很可能出问题,因为系统自动回去sys.path输出的这几个目录下去找,而自定义的模块很可能不再这些目录下,就需要人为的添加进去才能使用,所以就引出了后面几种方法

下面是在pycharm中的一个例子

在pycharm中可以使用os模块的__file__来得到当前目录import os
import sys
project_path = os.path.dirname(os.path.dirname(__file__))
sys.path.append(project_path)
from core import main

if __name__ == ‘__main__‘:
    main.home()

  

下面是在linux中的使用场景

在linux中__file__有时候不好用,通过os.path.abspath(‘start.py‘)的到绝对路径在处理
/usr/bin/env python
import os
import sys
project_path1 = os.path.dirname(os.path.abspath(‘start.py‘))  #在linux中使用__file__后面打印的时候竟然为空,所以只能多写一步,用abspath得到绝对路径在经行处理
project_path=os.path.dirname(project_path1)
sys.path.append(project_path)
print(sys.path)
print(project_path)
from code import main

if __name__ == ‘__main__‘:
    code.main.home()

  

  

原文地址:https://www.cnblogs.com/zhuhaofeng/p/9608033.html

时间: 2024-08-02 02:14:44

python导入模块时对路径的处理的相关文章

python导入模块时的执行顺序

当python导入模块,执行import语句时,到底进行了什么操作?按照python的文档,她执行了如下的操作: 第一步,创建一个新的module对象(它可能包含多个module) 第二步,把这个module对象插到sys.module中 第三步,装载module的代码(如果需要,则必须先编译) 第四步,执行新的module中对应的代码. 在执行第三步时,首先需要找到module程序所在的位置,搜索的顺序是: 当前路径(以及从当前目录指定的sys.path),pythonpath,然后是pyth

python 导入模块时所查询的路径

alex视频里的截图: 白色部分路径用来存放自己写的模块.(查询时按照顺序依次查找,找到即止) 但是在我自己的环境下并没有找到这个路径. 反倒是都有个site-packages目录. 不过没关系,这个路径可以自己添加: 方法一:函数添加1 import sys2 查看sys.path3 添加sys.path.append("c:\\") 当然,不要忘记创建相应的目录. 方法二:增加.pth文件,推荐!(本人未作测试)在site-packages添加一个路径文件,如mypkpath.pt

selenium + python自动化测试unittest框架学习(四)python导入模块及包知识点

在写脚本的时候,发现导入某些模块,经常报错提示导入模块失败,这里来恶补下python导入模块的知识点. 1.模块导入时文件查找顺序 在脚本中,import xxx模块时的具体步骤: (1)新建一个module (2)将module插入到sys.module (3)查找module的路径,查找的顺序为先查找当前使用导入模块的文件同一级目录,之后是python的搜索模块的路径集sys.path,最后是python所添加的默认环境变量的路径Python path (4)module查找到之后装载mod

Python导入模块的三种形式

Python导入模块的3中方式: 1.import module_name 这样在程序里就可以通过module_name.metnod_name()的方式访问模块里的函数了 Example: >>>import math >>> math.sqrt(5) 2.23606797749979 >>> math.pow(2,3) 8.0 >>> 2.from module_name import * 这样同样可以导入模块,且可以通过方法名直

python引入模块时import与from ... import的区别(转)

import datetime是引入整个datetime包,如果使用datetime包中的datetime类,需要加上模块名的限定. 1 import datetime 2 3 print datetime.datetime.now() 如果不加模块名限定会出现错误:TypeError: 'module' object is not callable \ AttributeError: 'module' object has no attribute 'now'     from datetim

python引入模块时import与from ... import的区别

import datetime是引入整个datetime包,如果使用datetime包中的datetime类,需要加上模块名的限定. 1 import datetime 2 3 print datetime.datetime.now() 如果不加模块名限定会出现错误:TypeError: 'module' object is not callable \ AttributeError: 'module' object has no attribute 'now'     from datetim

用python做采集时相对路径转换成绝对路径

采集时,有时候需要采集图片,但某些网站的图片提供的相对地址,最好转换成绝对地址 在scrapy中有如下的解决策略 http://stackoverflow.com/questions/6499603/python-scrapy-convert-relative-paths-to-absolute-paths http://stackoverflow.com/questions/19970015/scrapy-item-loader-to-get-a-absolute-url-from-extra

python 导入模块出错 ImportError: No module named 'request'

python 导入模块出错 ImportError: No module named 'request' import request ImportError: No module named 'request' 如果是requests第三方模块,那你就需要安装一下,pip install requests,然后import requests 就可以使用了 python3 import bs4 并没有找到相关模块(No module named 'bs4') 查看python3是否能用bs4(b

关于python中模块的import路径

前两天被一个同事问了一个python的问题: 为什么一个目录里的python文件引用不要另一个兄弟目录的python文件,但是这两个目录的父母录运行时是可以引用到了.当时感觉一直是模块和包的机制问题,回来翻了一下书,发现是引用路径的问题,记录一下. 在python中我们import模块时,系统会在python的引用路径下去查找这个模块文件, 这个引用路径是在编译或者安装的时候指定的,可以在两个地方进行修改: shell的PYTHONPATH环境变量,系统会在这个变量的目录中进行查找. 在pyth