Python2升级到Python3 导入模块失败

from modulefather  import moduleson

python导入模块的两种操作:

1.在~/.bashrc中将路径添加到环境变量PYTHONPATH,则在任何路径可以import该路径下的模块:

export PYTHONPATH="yourpath"

2. 默认在路径sys.path中寻找名为modulefather的模块,导入modulefather模块中的moduleson。

sys.path路径包含:

  • 当前的工作路径;
  • 环境变量PYTHONPATH指定的路径;
  • pip下载的标准(第三方)包site-paceages的路径;
  • 开发者指定的路径sys.path.append();

模块可以是包含.py的文件夹,也可以是.py文件:

若modulefather模块是一个.py文件,则moduleson是.py里的对象;若modulefather是一个包含.py文件的文件夹,moduleson可以是.py文件,或者另一个包含.py的文件夹。

在Python2中,把一个文件夹认定为一个模块需要在文件夹中包含__init__.py的文件,否则无法读入;而Ptyhon3无需__init__.py ,反而是如果在sys.path中一旦遇到包含__init__.py的文件夹,就把这个文件夹当成唯一的模块,不再去寻找sys.path中的其他路径中的模块,导致开发者指定的模块往往无法正常导入。

解决方法:对于Python2的代码,可以创建虚拟环境envs,在虚拟环境中使用Python2运行,具体操作可以查看https://blog.csdn.net/Cxiazaiyu/article/details/81209228

Reference:

1. Traps for the Unwary in Python’s Import System — Nick Coghlan's Python Notes 1.0 documentation

2. How does python find packages? // Lee On Coding // My blog about coding and stuff.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yuyuelongfly

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

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

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

打赏作者

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

抵扣说明:

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

余额充值