首页 > 编程语言 >python---引用其他py文件中的函数-yuan

python---引用其他py文件中的函数-yuan

时间:2023-05-27 19:45:11浏览次数:37  
标签:sys python py --- 导入 test path

/user/test:
....A
........a.py
....B
........b.py
a.py:

def fa():
	print("a")

b.py想调用a.py中的函数fa():

sys添加路径方法

import sys
sys.path.append("test/A")
from a import *
fa()

init方法-1:

  1. 在A文件夹和B文件夹中新建__init__.py文件,目录变成:
    test:
    ....A
    ........a.py
    ........init.py
    ....B
    ........b.py
    ........init.py
  2. b.py中的内容为:
from A.a import *
fa()

此时,b.py运行的时候,首先需要将目录切换到test文件夹,即:/user/test目录下;然后执行python -m B.b。这个时候会把当前执行目录(/user/test)添加到sys.path中。这个目录包含需要导入的模块A.a的路径,所以模块导入成功。
如果直接在/user/test/B目录下运行python b.py,则会将b.py文件所在的目录/user/test/B添加到sys.path中。这个目录不包含导入的模块:a.py的路径(/user/test/A),所以会导入模块失败。

init方法-2:

  1. 在test文件夹中新建文件c.py,在c.py中调用b.py,此时,b.py导入a.py模块的时候以c.py作为相对路径。
  2. b.py
from A.a import *
def fb():
    fa()
  1. c.py
from B.b import *
fb()
  1. 执行python c.py,此时,会把c.py的目录/user/test添加到sys.path中。模块可以导入成功。

总结:python导入模块的机制原理:将from后面的内容(即要导入的模块),拼接到sys.path中的每一条路径后面,如果可以正确识别,则该模块可以正确导入。否则导入失败。根据该原理:__init.py__文件的存在保证了只需将项目的根目录添加到sys.path中,其下的子文件夹和.py文件均可被识别。添加路径的方法可以使用sys.path.append()方法(python也会把当前执行的py文件所在目录自动添加到sys.path中)。

标签:sys,python,py,---,导入,test,path
From: https://www.cnblogs.com/p4p4p4/p/17437218.html

相关文章

  • #295. 「BJWC2010」矩阵距离 题解 2021-09-23 21:42:32
    #295.「BJWC2010」矩阵距离又是一道需要真正思考了才可以做出来的水题。题目描述给出一个N*M的01矩阵,输出每个0到离这个点最近的1的距离。思考历程暴力由于$N\le10^3$如果在赛场上出现这个题,我们优先考虑暴力。暴力也是很简单,从每个为0的点出发bfs找到与最近的......
  • [论文阅读] GAS-NeXt@Few-Shot Cross-Lingual Font Generator
    Pretitle:GAS-NeXt:Few-ShotCross-LingualFontGeneratoraccepted:arxiv2022paper:https://arxiv.org/abs/2212.02886code:https://github.com/cmu-11785-F22-55/GAS-NeXt关键词:few-shot,cross-lingual,fontgeneration阅读理由:新作,有代码,简单易读(快速应对组会),......
  • 使用 Python 计算斐波那契数列
    斐波那契数列是一个经典的数学序列,其每个数字是前两个数字之和。本篇博客将展示如何使用Python编程语言计算斐波那契数列。通过实际代码示例,读者将能够理解斐波那契数列的概念以及如何在Python中实现。文章内容:斐波那契数列简介介绍斐波那契数列的定义和特点。解释斐波那契数列......
  • 批量ping-网段版
    原创文档编写不易,未经许可请勿转载。文档中有疑问的可以邮件联系我。邮箱:[email protected]说明shell脚本,适用于Linux操作系统中多个网段ping测。目前只能测试24位的网段。该脚本执行前需要操作系统已经具备timeout、ping命令。每个IP地址ping超时设置为2秒,脚本分为两个版本,基础......
  • 二分图和 2-SAT 问题入门
    二分图定义通俗的说,就是一个图可以分成两个部分,两个部分内部没有连接的边,所有的边都在两个部分之间。比如这就是一张二分图。可以发现,A,B集合中各自是没有边连接的,边都连在了AB集合之间。并且4是独立的,所以其实我们把它归到集合A中或者集合B中都可以。判断二分图就......
  • 策略模式-StrategyPattern-使用案例
    TheStrategypatternisabehavioraldesignpatternthatallowsyoutodefineafamilyofalgorithms,encapsulateeachoneasaseparateclass,andmaketheminterchangeable.Itenablesclientstochoosefromdifferentalgorithmsatruntimewithouttightl......
  • Python_pip install opencv-python太慢的问题
    https://blog.csdn.net/morecccc/article/details/126716080参照如上地址 python安装cv2模块解决安装慢的问题我在这个路径下面C:\Users\renyc\AppData\Roaming新建了pip文件夹  再次新建pip.ini配置文件 内容如下:[global]timeout=6000index-url=https://p......
  • 七、JUC-CAS
    一、原子类java.util.concurrent.atomic下所有的类二、没有用CAS之前多线程下不使用原子类保证线程安全i++(基本数据类型)packagecom.lori.juc2023.juc7;publicclasscasDemo1{volatileintnumber=0;//读取publicintgetNumber(){returnnumber......
  • 网安--Linux cnetos7相关操作
    1、修改静态网络配置文件vim/etc/sysconfig/network-scripts/ifcfg-ens33 IPADDR、NETMASK等需要大写如果出现问题可以重启虚拟网卡2、centos修改yum源shift+insert粘贴1、yum源存放的地址 2、对旧的文件进行备份 3、替换yum源地址,换成阿里云的地址  3、Xs......
  • Terra-Luna归零一年后:信任重建、加密未来路在何方?
       本月既是Terra-Luna归零的一周年,也是FTX崩溃的第六个月,而这两个事件分别代表着2022年加密市场连环爆的开始与高潮,引发了加密行业15年历史上最可怕的生存危机。   尽管今年市场行情有所回暖,比特币开年至今涨幅70%,以太坊完成Shapella升级以及香港宣布放开虚拟资产交易,但那些......