Python怎么导入包(python38导入包)
如何把一个python包导入到python库中
Python 运行环境在查找模块时是对 sys.path 列表进行遍历,如果我们想在运行环境中添加自定义的模块,主要有以下三种方法:
1. 在sys.path列表中添加新的路径(只能对执行了 sys.path.append 命令的当前 Python 运行环境起作用,对其他运行环境不起作用,也即“一次性”的)。
import sys
sys.path
sys.path.append('/home/xxx/yyy') #目录/home/xxx/yyy包含你所需要的包或模块
设置 PYTHONPATH 环境变量(永久性添加):
2. 将包或模块复制到 sys.path 列表中的目录(通过 sys.path 查看)里(如 /home/test/lib/python2.7/site-packages/ 目录)。
3. 最简单的办法是用 .pth 文件来实现。Python 在遍历已有的库文件目录(sys.path中指定)过程中,如果见到一个 .pth 文件,就会将该文件中所记录的路径加入到 sys.path 设置中,这样 .pth 文件说指明的库也就可以被 Python 运行环境找到。
$cd /home/test/lib/python2.7/site-packages/
$touch test.pth
$vim test.pth
$添加一行包或模块所在的目录(如:/home/test/somePackage/)
则test.pth文件内容为:
/home/test/somePackage/

python里面的auc怎么导入
1. 引入相关包
使用matplotlib包作为绘图库,故要引入相关的包,如下所示。
import matplotlib.pyplot as plt
2. 数据处理部分
首先引入numpy包对数据进行处理,如下所示。
import numpy as np
要计算AUC和AUPR,还应该引入sklearn中计算相关值的包,如下所示。
from sklearn.metrics import roc_curve, auc
from sklearn.metrics import precision_recall_curve
然后导入相关数据
y_1 = np.load('product_HSIC,y.npy')
yp_1 = np.load('product_HSIC,yp.npy')
y_2 = np.load('product_mean,y.npy')
yp_2 = np.load('product_mean,yp.npy')
y_3 = np.load('sum_HSIC,y.npy')
yp_3 = np.load('sum_HSIC,yp.npy')
y_4 = np.load('sum_mean,y.npy')
yp_4 = np.load('sum_mean,yp.npy')
2.1 计算AUC值
AUC,即AUROC,指的是由TPR和FPR围成的ROC曲线下的面积。
将分类任务的实际值和预测值作为参数输入给roc_curve()方法可以得到FPR、TPR和对应的阈值。
auc()方法可以计算曲线下的面积,将FPR和TPR作为参数输入,即可获得AUC值。
fpr_1, tpr_1, threshold_1 = roc_curve(y_1, yp_1) # 计算FPR和TPR
auc_1 = auc(fpr_1, tpr_1) # 计算AUC值
fpr_2, tpr_2, threshold_2 = roc_curve(y_2, yp_2)
auc_2 = auc(fpr_2, tpr_2)
fpr_3, tpr_3, threshold_3 = roc_curve(y_3, yp_3)
auc_3 = auc(fpr_3, tpr_3)
fpr_4, tpr_4, threshold_4 = roc_curve(y_4, yp_4)
auc_4 = auc(fpr_4, tpr_4)
2.2 计算AUPR值
AUPR,指的是由Precision和Recall围成的PR曲线下的面积。
将分类任务的实际值和预测值作为参数输入给precision_recall_curve()方法可以得到Precision、Recall和对应的阈值。
auc()方法可以计算曲线下的面积,将Recall和Precision(注意顺序)作为参数输入,即可获得AUPR值。
python中模块导入的方法
python中模块导入的方法:
方式一:使用 import 语句来引入模块
直接使用关键词import,后面跟具体的模块名称,就可以导入某一个模块。同一个模块不管执行了多少次import,都只会被导入一次,以防止模块被一遍又一遍的执行。
方式二:使用from…import 语句来引入模块
在使用import语句导入模块时会将整个模块引入进来,而使用from...import 语句则是从模块中导入一个指定的部分到当前命名空间中。如上面代码中则只会导入pprint模块中的pprint函数,其他函数并不会导入。
方式三:使用from…import语句来引入模块
在多数情况下,Python程序员都不会使用这个功能,因为它在解释器中引入了一组未知的名称,而它们很可能会覆盖一些你已经定义过的东西。
注意通常情况下从一个模块或者包内调入 * 的做法是不太被接受的, 因为这通常会导致代码的可读性很差。不过,在交互式编译器中为了节省打字可以这么用。
模块的好处
1、大大提高了代码的可维护性。
2、代码不必从零开始,一个模块编写完毕之后,其他模块可以直接调用,节约了工作时间。
3、避免函数名称和变量名称重复,在不同的模块中可以存在相同名字的函数名和变量名,但是尽量不要和系统内置的模块名称重复。
python 中库怎么导入?
让包内导入更加显式,这个功能的一部分设计初衷是,为了帮助脚本解决同名文件出现在模块搜索路径上多个不同位置时的二义性。考虑包目录,这定义了一个名为mypkg 的包,其中含有名为mypkg.main和mypkg.string 的模块。现在,假设模块main试图导入名为string的模块。在 Python 2.X和更早版本中,Python会先寻找mypkg目录以执行相对导入。这会找到并导入位于该处的string.py文件,将其赋值给mypkg.main模块命名空间内的名称string。不过,这一导入的本意可能是要导入Python标准库的string模块。可惜的是,在这些Python版本中,无法直接忽略mypkg.string 去寻找位于模块搜索路径更右侧的标准库中的string模块。此外,我们无法使用完整包导入路径来解决这个问题,因为我们无法依赖在每台机器上的标准链接库路径。换句话说,包中的简单导入可能具有二义性而且容易出错。在包内,我们无法确定imports pam语句指的是包内的模块还是包外的模块。一种可能的后果是,一个局部的模块或包会在不经意间隐藏了sys.path 上的另一个模块。
在实践中,Python使用者可以避免为他们自己的模块重复使用标准库模块的名称(如果需要标准string库,就不要把新的模块命名为string)。但是,一个包还是有可能意外地隐藏标准库模块。再者,Python 以后可能新增标准库模块,而其名称可能刚好就和自己的一个模块同名。而依赖于没有点号开头相对导入的程序代码同样也不容易理解,因为读者可能对希望使用哪个模块而感到困惑。所以我们最好能在代码中显式地指出导入的解析过程。
Python 导入自建包报错ModuleNotFoundError: No module named xxx
如图,三个模块的关系:模块A导入模块B,而模块B导入模块C
执行模块A时,会报错ModuleNotFoundError: No module named xxx,说找不到模块C。
于是就打开模块B查看,发现导入模块C是正常的,这就让人很头疼
模块B和模块C是同一个包,而模块A又是在另一个包。同个包内的模块B可以用相对路径找到模块C,不同包的模块A则不能。
方案一:项目根目录为起始路径导入包
在IDE中执行python程序,编译器会自动把当前项目的根目录加入到包查找路径中,可以理解为加到PYTHONPATH下,所以导入写法如下:
方案二:导包时,把目标模块的路径加入包查找路径中
推荐使用方案一,养成好习惯,从项目根目录开始导包。