python导包问题(多文件相互导包)

早期就发现了Python这东西跟Java在导包方面,路径是有很大差异的,但是今天才发现差异原来那么大,下面进行整体的Python导包路径汇总

首先,最重要的一点,导包不要用 * ,不要用 * ,不要用 * !!!!!!

其次,如果一个文件 a 引入了文件 c 的路径,同时这个文件 a 还要被别的文件 b 引用,那么文件a中所引入的文件 c 的路径最好采用函数变为绝对路径!!!!!!!

例子:

  • main.py
  • model
    • Model.py
    • Train.py
  • utils
    • Load_Data.py
    • test.py
    • dataset
      • data.json

解释:

 1、 Python的x瘫导包机制,导致文件路径会从你当前运行文件的这个路径开始计算,例如Model.py中,有一个xx函数,里面调用了 '../utils/test.py',同时如果main函数采用from utils.Model import *这种方式,那么在main中使用xx函数,就会从main函数这个根路径,再进行返回上一级寻找test.py文件,而不是从Model函数来返回上一级寻找

2、假如Load_Data.py函数用'dataset/data.json'来使用了json的数据,那么如果Train.py引入了Load_Data(不管以什么方式),那么就会从Train.py这个文件为根路径,寻找dataset文件夹,这样也会引发报错

解决方式:

1、导包采用正确的导包方式,在model下的文件,不需要返回上一级,可以直接导utils下的包,如Model.py中可以直接from utils import Load_Data

2、在涉及一些数据文件路径的时候,如果使用数据文件的这个py文件要被别人引用,那么所有偶的数据文件路径均需要采用绝对路径来表示,如下面Load_Data.py中的代码所示:

import os
current_dir = os.path.dirname(__file__) # 获取当前文件的绝对路径
GPT_File = os.path.join(current_dir, 'dataset', 'data.json') # 拼接字符串,采用绝对路径来进行地址映射

这样可以确保你的所有文件的路径都是正确的

在Linux中,使用pip是一种常见的方式来安装和管理Python包。你可以通过以下命令来安装pip: ``` sudo apt-get install python-pip ``` 这将在你的系统中安装pip工具。 当你遇到导包问题时,可以考虑以下几个解决方案: 1. 确保安装了需要的Python包,可以使用pip来安装缺失的包。例如,如果你需要安装numpy包,可以使用以下命令: ``` pip install numpy ``` 2. 检查你的Python版本,有时候不同的Python版本可能会导致导包问题。你可以尝试更高版本的Python来解决问题。例如,你可以升级到Python 3.7.7版本。 3. 修改相关的Python文件。有时候,你可能需要修改某个Python文件来解决导包问题。你可以根据具体情况修改文件中的导包语句或相关配置。 这些是解决在Linux中导包问题的常见方法。你可以根据具体情况选择适合你的解决方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Linux系统如何查看已安装的python包 -- 导出项目使用的依赖包](https://blog.csdn.net/qq_40671063/article/details/125864237)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Linux【Ubuntu18.04】python3.7 导包报错:No module named ‘_lzma’](https://blog.csdn.net/weixin_45835541/article/details/127101291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梵星sama

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值