Python代码中引用已经写好的模块、方法的两种方式

平时写的一些 Python 的代码,需要在其他模块里面复用。最粗狂的方法就是直接 copy 过去。

但这种方式太麻烦,copy 一堆代码,导致代码量也很多。copy 的也不爽。

下面就介绍两种方式,可以简洁明了地调用自己在其他模块写的代码。

个人推荐第二种方式。

方式一:

手动使用 sys 调用自己写的 Python 模块、方法

我的代码存在 E:\\PycharmProjects\\111 目录下。需要调用的代码是 mypymy007.py 里的 funA() 方法。

my007.py 里的代码如下所示:

def funA():
    print("funcA in module_11")
    print("调用E:\\PycharmProjects\\111\\mypy\\my007.py目录下的funA()方法")
    return

my008.py 也是在 E:\\PycharmProjects\\111\\mypy 目录下

my008.py 代码如下:

import sys
sys.path.append("../")  # my008.py与my007.py同在 E:\\PycharmProjects\\111\\mypy目录下
from mypy.my007 import funA
funA()

打印结果为:

funcA in module_11
调用E:\PycharmProjects\111\mypy\my007.py目录下的funA()方法

这种调用方式的弊端是,需要在每个项目的入口文件中增加两行代码,无法做到全自动。

方式二:

全自动调用自己写的 Python 模块、方法

找到自己安装 Anaconda 的目录下的 site-packages 。我的目录如下所示:

D:\Anaconda3\Lib\site-packages

在该目录下创建一个文件,文件名可以随意,扩展名必须是 .pth ,我创建的是 my_code.pth

文件里面将需要引用的模块所在文件夹的绝对路径写进去,如果有多个文件夹,可以写多行,一行一个

如下图所示:

这个时候,就可以在代码中随意使用了。代码如下:

from my007 import funA
funA()

打印结果为:

funcA in module_11
调用E:\PycharmProjects\111\mypy\my007.py目录下的funA()方法

如果不知道 site-packages 在哪个目录下

那么使用下面的代码即可找到:

import sysconfig
print(sysconfig.get_path("purelib"))

到此这篇关于Python代码中引用已经写好的模块、方法的文章就介绍到这了,更多相关Python模块方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 通过numba模块给Python代码提速的方法详解

    简介:numba是Anaconda公司开发的针对Python的开源JIT编译器,用于提供Python版CPU和GPU编程,速度比原生Python快数十倍.numba是第三方库,可以在运行时将Python代码编译为本地机器指令,而不会强制大幅度的改变普通的Python代码,使得在部分场景下执行Python的效率得到飞速的提升. 工作原理对比: Python文件执行过程 1..py文件通过解释器转化为虚拟机可以执行的字节码(.pyc):字节码在虚拟机上执行,得到结果. 2.字节码是一种只能运行在虚拟

  • Python面向对象魔法方法和单例模块代码实例

    魔法方法 ​ 凡是在类内部定义,以"__开头__结尾"的方法都称之为魔法方法,又称"类的内置方法", 这些方法会在某些条件成立时触发. 经常用到的双下方法 __init__: 在调用类时触发. __delarttr__: __getattr__: 会在对象.属性时,"属性没有"的情况下才会触发.对象.__dict__[属性]不会触发__getattr__,会报keyerror: __getattribute__:会在对象.属性时触发,不管有没有该

  • 用Python代码自动生成文献的IEEE引用格式的实现

    今天尝试着将引用文献的格式按照IEEE的标准重新排版,感觉手动一条一条改太麻烦,而且很容易出错,所以尝试着用Python写了一个小程序用于根据BibTeX引用格式来生成IEEE引用格式. 先看代码,如下: import re def getIeeeJournalFormat(bibInfo): """ 生成期刊文献的IEEE引用格式:{作者}, "{文章标题}," {期刊名称}, vol. {卷数}, no. {编号}, pp. {页码}, {年份}. :

  • Python pickle模块常用方法代码实例

    用于序列化的两个模块 json:用于字符串和Python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换 json提供四个功能:dumps,dump,loads,load pickle提供四个功能:dumps,dump,loads,load pickle可以存储什么类型的数据呢? 所有python支持的原生类型:布尔值,整数,浮点数,复数,字符串,字节,None. 由任何原生类型组成的列表,元组,字典和集合. 函数,类,类的实例 pickle模块中

  • Python csv模块使用方法代码实例

    这篇文章主要介绍了Python csv模块使用方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 import csv def openSCV(filename): with open("renting.csv",'r',encoding = 'utf_8_sig') as f: f_csv = csv.reader(f) for row in f_csv: print(row) def Test1(): headers =

  • Python中对象的引用与复制代码示例

    可以说Python没有赋值,只有引用.你这样相当于创建了一个引用自身的结构,所以导致了无限循环.为了理解这个问题,有个基本概念需要搞清楚. Python没有「变量」,我们平时所说的变量其实只是「标签」,是引用. python中,"a=b"表示的是对象a引用对象b,对象a本身没有单独分配内存空间(重要:不是复制!),它指向计算机中存储对象b的内存.因此,要想将一个对象复制为另一个对象,不能简单地用等号操作,要使用其它的方法.如序列类的对象是(列表.元组)要使用切片操作符(即':')来做复

  • python共享引用(多个变量引用)示例代码

    复制代码 代码如下: a = 3b = a 先上图(图1)吧,大家一看就一目了然了: 变量名和对象,在运行赋值语句b = a之后,变量a,b都指向了对象3的内存空间.假设这时执行 a = 'python', a将指向刚创建的字符串对象.我们再来试试这种情况: 复制代码 代码如下: >>>list_1 = [1,2,3,4]>>>list_2 = list_1>>>list_2>>>list_1[0] = 'python'>>

  • Python代码中引用已经写好的模块、方法的两种方式

    平时写的一些 Python 的代码,需要在其他模块里面复用.最粗狂的方法就是直接 copy 过去. 但这种方式太麻烦,copy 一堆代码,导致代码量也很多.copy 的也不爽. 下面就介绍两种方式,可以简洁明了地调用自己在其他模块写的代码. 个人推荐第二种方式. 方式一: 手动使用 sys 调用自己写的 Python 模块.方法 我的代码存在 E:\\PycharmProjects\\111 目录下.需要调用的代码是 mypy 下 my007.py 里的 funA() 方法. my007.py

  • oracle中得到一条SQL语句的执行时间的两种方式

    oracle中如果需要得到一条SQL语句的执行时间可以用如下2种方式 复制代码 代码如下: SQL> set timing on; SQL> select count(*) from wea; COUNT(*) ---------- 39490 已用时间: 00: 00: 00.06 SQL> select sql_text, elapsed_time from v$sql 2 where sql_text like 'select count(*) from wea'; 未选定行 已用

  • Python中在脚本中引用其他文件函数的实现方法

    在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys.path中包含的路径例如包的安装地址.所以如果要在当前脚本引用其他文件,除了将文件放在和脚本同一目录下,还有以下几种方法, 1. 将文件所在位置添加到sys.path中 import sys sys.path.insert(0, '/path/to/application/app/folder') # or sys.path.append('/path/to/application/a

  • python代码中怎么换行

    在写代码过程中,经常遇到一行代码很长的情况.为了让代码显得整齐干净,就需要把一行代码分成多行来写,Python中有两种小技巧可以实现该功能: 1.用反斜杠链接多行代码,示例输出:55 a = 22 + \        33 print a 2.用小括号括起来,示例输出:55 a = (22+        33) print a 提示:针对较长字符串分成多行书写的还有一种简单的方法:用三个单引号,但是该方法只针对字符串有用.下面代码输出: 32 +     45 a = '''32 +    

  • python 编码中为什么要写类型注解?

    1.背景 我们先谈谈为什么在Python编码过程中强烈推荐使用类型注解 ? Python对于初学者来说是非常好上手,原因是在于对计算机底层原理的高度封装和动态语言的特性使得Python用起来非常的舒适.但这种"舒适"是有代价的,我们可能听说过一句形容动态语言的话,动态一时爽,一直动态一直爽.为什么会这么说?动态的确会赋予我们在编码时更多的灵活性与能力,但是动态带来的是更多的不确定性及混乱,导致了后来的维护者甚至作者自己都会产生很大的维护压力(可以想象一个经过几年迭代的复杂系统,如果大部

  • 聊聊Python代码中if __name__ == ‘__main__‘的作用是什么

    目录 Python中if__name__==‘__main__‘作用 补充:if__name__=='__main__':的运行原理 总结 Python中if __name__ == ‘__main__‘作用 要搞清楚这个问题,要知道以py作为后缀的Python代码文件,有两种使用方式,第一种方式是直接运行,另一种方式是作为模块被别的py文件导入. 当采用第一种方式直接运行自身时,__name__的值为__main__: 当采用第二种方式被别的模块导入时,其__name__的值为其文件名(通常也

  • Python代码中如何读取键盘录入的值

    读取键盘输入 Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: raw_input input raw_input函数 raw_input([prompt]) 函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符): #!/usr/bin/python str = raw_input("Enter your input: "); print "Received input is : ", str 这将提示你输入任意字符串,然

  • C# 在项目中引用x86 x64的非托管代码的方法

    因为现在的项目使用的是 AnyCpu 在 x86 的设备使用的是x86,在x64使用的是x64,但是对于非托管代码,必须要在x64使用x64的dll,在x86使用x86的dll.在C++没有和C#一样的 AnyCpu 所以需要在项目运行在x86的时候加载x86的dll. 本文告诉大家如何在代码引用不同的dll. 使用宏 最简单的方法是编译两个版本,编译多个版本可以点击配置管理器,然后创建x86和x64,然后版本添加宏,这样就可以判断宏来使用不同的dll 点击活动解决方案平台,然后点击新建 选择项

  • 详解python中字典的循环遍历的两种方式

    开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python3中,下面两种方法都是通用的. 1. 只对键的遍历 一个简单的for语句就能循环字典的所有键,就像处理序列一样: d = {'name1' : 'pythontab', 'name2' : '.', 'name3' : 'com'} for key in d: print (key, ' value

  • python pandas中DataFrame类型数据操作函数的方法

    python数据分析工具pandas中DataFrame和Series作为主要的数据结构. 本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数. 1)查看DataFrame数据及属性 df_obj = DataFrame() #创建DataFrame对象 df_obj.dtypes #查看各行的数据格式 df_obj['列名'].astype(int)#转换某列的数据类型 df_obj.head() #查看前几行的数据,默认前5行 df_obj.tail() #查看后几

随机推荐