python导入本地模块出错,在Python ImportError中导入本地模块:不是名为的模块*

这里有几件事发生了,让我们把它分解一下。在

上层foo目录混淆了Pycharms的解析顺序。让我们试试这个结构:project/

foo_1.py

src/

__init__.py

bar.py

foo_2.py

默认情况下,Pycharm假定project/在解析顺序中具有优先权。在我的示例中,如果您开始在棒.py,Pycharm的auto-complete将建议使用foo\u 1,而不是foo\u 2。因此,当您导入foo时,Pycharm假设它是顶级foo,而boo对于它来说是无法解决的。在

那么为什么Pycharm不假设foo峎2?

假设棒.py有一行:

^{pr2}$

如果你跑就行了棒.py直接因为Python将当前工作目录添加到Python Path中。但是,从任何地方打电话给你,你就有麻烦了。编辑foo_1.py以获得以下一行:import src.bar

直接运行foo_1.py(这使得CWD project/)和棒.py会找不到foo嫒2。

这对于将使用您的包并且不使用project/src作为CWD的任何人来说都是一个严重的问题,这将是每个人的问题。

如何修复

标准做法是在分发后命名源文件夹。假设'src'是您的发行版的名称,棒.py应该这样做:import src.foo_2

规则的例外

我假设你在写一个包裹。如果棒.py是一个脚本,因此很可能被直接调用,那么您可以假设它每次都会成功,您应该只对该行禁用检查:#noinspection PyUnresolvedRefrences

import foo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值