ubuntu下Python导⼊⾃定义模块的⽅法
ubuntu下Python导⼊⾃定义模块的⽅法
less is more谁说的
当在python程序中导⼊⾃定义模块时,若出现“Import Error:no module named xxx”表明系统在python的搜索路径(PYTHONPATH)中不到该模块,需要把该模块添加到python的搜索路径中。
要⽤import mymodule导⼊⾃定义的模块,其必须在python的搜索路径中,⼀般有三种⽅法可以采⽤:
1.将你⾃定义的模块(.py⽂件)放置在python的任意搜索路径下(可以在python中输⼊import sys和sys.path 查看搜索路径)
2.修改环境变量PYTHONPATH以包含⽤户⾃定义模块的路径
临时修改:在终端输⼊export PYTHONPATH=/mymodule directory:$PYTHONPATH
,利⽤echo $PYTHONPATH 命令可查看是否将路径添加成功。该⽅法在当前终端下有效,但若关闭终端后重新打开,则会失效。
彻底修改:要想使修改始终有效,则需要修改⽤户或系统的环境变量配置⽂件。以修改⽤户的环境变量
配置⽂件.bashrc或.profile为例(两个⽂件均在⽤户主⽬录下/home/⽤户名,.bahsrc包含专⽤于你的bash shell的bash信息,当登录以及每次打开新的shell时,该⽂件被读取;.profile包含专⽤于你的shell信息,当⽤户登录时,该⽂件仅仅执⾏⼀次,它设置⼀些环境变量,执⾏⽤户的.bashrc⽂件)。cd到⽤户主⽬录下,打开.bashrc或.profile⽂件,在末尾添加⼀⾏export PYTHONPATH=/mymodule directory:$PYTHONPATH,保存退出后,执⾏source .bashrc 或source .profile命令使修改⽣效。修改系统环境变量配置⽂件的过程也类似,只不过相应的⽂件要到/etc ⽬录下去。
vi ~/.bashrc
export PYTHONPATH=$PYTHONPATH:/data/xm/jinnanbisai/project/code/Detectron/detectron/core
source ~/.bashrc
3.修改python的sys.path变量,在导⼊⾃定义模块前,执⾏以下操作。此⽅法也只能临时起作⽤,退出python下次再进来就失效了。
import sys
sys.path.append('mymodule directory')
原⽂:blog.csdn/Blateyang/article/details/78753051
python模块以及导⼊出现ImportError: No module named 'xxx'问题---blog.csdn/damotiansheng/article/details/43916881
关于 python ImportError: No module named 的问题---my.oschina/leejun2005/blog/109679
python⾃定义模块导⼊⽅法,⽂件夹,包,⽂件夹的区别---blog.csdn/a583179/article/details/79084195
python入门教程非常详细wordpython模块导⼊,⽹上介绍的资料很多,⽅法也众说纷纭。根据⾃⼰的实践,感觉这个⽅法最简单直接,⽽且可以与主流的python ide⽣成的⼯程是⼀样的。
规则只有三条
1.      严格区分包和⽂件夹。包的定义就是包含__init__.py的⽂件夹。如果没有__init__.py,那么就是普通的⽂件夹。
2.      导⼊package。在python 安装⽬录的site-package⽂件夹中新建xxx.pth,内容是需要导⼊的package所在的⽂件夹路径。
3.      导⼊模块。就是⼀般的模块导⼊写法,注意只要包路径,不要⽂件夹路径。
⽰例:
以上⾯⼯程为例,
总共有4个包,分别是:package,package1, package2, folder2.(注意,folder1不是package,因为它没有__init__.py)。
这些包所在的⽂件夹共有两个,test以及test/folder1。注意,package2所在的⽂件夹是test,虽然它是包含在folder2⾥⾯,但是folder2是⼀个包,不是⼀个⽂件夹。
因此在site-package中新建⼀个XXX.pth, ⾥⾯添加上test以及test/folder1的绝对路径即可。
使⽤pth⽂件,在 site-packages ⽂件中创建 .pth⽂件,将模块的路径写进去,⼀⾏⼀个路径,以下是⼀个⽰例,pth⽂件也可以使⽤注释:
# .pth file for the  my project(这⾏是注释)
E:\DjangoWord
E:\DjangoWord\mysite
E:\DjangoWord\mysite\polls
模块导⼊⽐较简单,只要依次填包名就可以了,但注意只要包名
如果需要导⼊module2,则import dule2
如果需要导⼊module1,则dule1  注意,路径中没有folder1,因为folder1是⽂件夹,不是包。
Python在不同⽬录下导⼊模块的⽅法---blog.csdn/zhili8866/article/details/52980924
Python3导⼊⾃定义模块的3种⽅式---blog.csdn/pwc1996/article/details/52577148
前话
最近跟着廖雪峰的教程学到模块这⼀节。关于如何⾃定义⼀个模块,如果⼤家不懂的话还请先看下⾯这篇博⽂↓
www.liaoxuefeng/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318447437605e90206e261744c08630a836851f5183000)模块是个好东西啊,⼤⽜们开源共享许多模块也加快了⼤家开发的速度,许多开源模块可以在这⾥到↓
十进制转2进制计算器/pypi
因为刚⼊门所有有很多细节不懂,在⽹上搜寻资料的时候发现各位⼤神们的教程实在太过于精简,让我这个菜鸟很⾟苦的才操作成功。
因此在这⾥记录下来。
开始
第⼀种,直接 import
这⾥有个⼤前提,就是你的py执⾏⽂件和模块同属于同个⽬录(⽗级⽬录),如下图:
main.py 和 pwcong模块同在python⽬录
执⾏⽂件为main.py
pwcong⽂件夹为⼀个模块
我把pwcong模块提供的函数写在__init__.py⾥,⾥⾯只提供⼀个hi函数:
# pwcong 模块的 __init__.py
# -*- coding: utf-8 -*-
def hi():
print("hi")函数sumproduct多条件求和
执⾏⽂件main.py直接import模块:
# main.py
# -*- coding: utf-8 -*-
import pwcong
pwcong.hi()
接着我们运⾏⼀下main.py可以看到命令⾏窗⼝输出了⼀句hi,第⼀种⽅式完成。
使⽤模块⽅式为:先导⼊-》接着输⼊模块.变量|函数,如上⾯例⼦的 pwcong.hi()
第⼆种,通过sys模块导⼊⾃定义模块的path
如果执⾏⽂件和模块不在同⼀⽬录,这时候直接import是不到⾃定义模块的。如下图:
执⾏⽂件main.py在main⽬录下
pwcong模块在python⽬录下
sys模块是python内置的,因此我们导⼊⾃定义模块的步骤如下:
先导⼊sys模块
然后通过sys.path.append(path) 函数来导⼊⾃定义模块所在的⽬录
导⼊⾃定义模块。
这时候 main.py 这样写:
# main.py
# -*- coding: utf-8 -*-
import sys
sys.path.append(r"C:\Users\Pwcong\Desktop\python")
医学array是什么意思import pwcong
pwcong.hi()
最后执⾏main.py⽂件,最终输出 hi ,第⼆种⽅式完成。
第三种,通过pth⽂件到⾃定义模块
这个⽅法原理就是利⽤了系统变量,python会扫描path变量的路径来导⼊模块,可以在系统path⾥⾯添加。但是我还是推荐使⽤pth⽂件添加。模块和执⾏⽂件⽬录结构跟上图⼀样:
click什么时候加on
执⾏⽂件main.py在main⽬录下
pwcong模块在python⽬录下
我们创建⼀个 module_pwcong.pth ⽂件,⾥⾯内容就是 pwcong模块所在的⽬录:C:\Users\Pwcong\Desktop\python
将该 module_pwcong.pth ⽂件放到这⾥:
python安装⽬录\Python35\Lib\site-packages
例如:
然后 main.py 导⼊并使⽤⾃定义模块:
# -*- coding: utf-8 -*-
import pwcong
pwcong.hi()
最后执⾏ main.py ⽂件,可以输出hi,第三种⽅式完成。
结束!
调⽤⽂件中的包中包的模块
cd /home/xm/anaconda3/envs/py27/lib/python2.7/site-packages
vi module_detectron.pth
编辑内容:/data/xm/jinnanbisai/project/code/Detectron

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。