Python从不同文件导入不同结果

标签 python python-3.x import module

我有 2 个相同文件: a.pyb.py

它们都包含该行

从 mypackage.utils 导入通用

我还有一个包裹:

mypackage/  
    __init__.py
    mymodule.py
    utils/ 
        __init__.py
        common.py
        myutils1.py
        b.py
    data_classes/ 
        __init__.py
        command_file.py
        myclass.py

我初步做了一个 pip install mypackage

然后我运行: python a.py 成功了

然后我就跑了 python b.py(请注意,b.py 是 mypackage 中的一个文件)

b.py 失败,没有名为 utils 的模块

有什么想法吗?

(注意:我对 stackoverflow 还很陌生,这与 Python modules import fails ,虽然不知何故是一个后续问题,所以如果我问一个新问题做错了什么,请告诉我:)

<小时/>

编辑:

我将 mypackage (特别是 mypackage 中的文件 b)安装在:

$HOME\github\mypackage\mypackage\utils\b.py

我将 b.py 复制到 a.py: $HOME\github\mypackage 这有效

我将 b.py 复制到 a.py: $HOME\github\ 这不起作用

所以这在某种程度上解释了这一点......尽管我仍然不知道如何解决它!

<小时/>

编辑: 我从以下行编辑了 setup.py:

packages=['mypackage'],

packages=['mypackage','mypackage.data_classes','mypackage.utils']

这似乎解决了我的问题:现在一切正常。

有什么充分的理由让我不应该这样做吗?

最佳答案

我找到了几个解决方案:

import common

import sys
sys.path.append("..\\..") # relative path to mypackage, check the slash if you're on linux
from mypackage.utils import common

一些问题:

为什么要移动 b.py?

你安装了你的软件包吗?

关于Python从不同文件导入不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59714611/

相关文章:

python - 未知大小的数组

python - comtypes 内部方法在 LP_BSTR 上失败

python - 获取一长串项目并将其 reshape 为数据框 "rows"- pandas python 3

magento - 在 magento 中导入带有斜杠的类别名称的产品

python - Flask 的 -a 参数?

c# - Global.asax 不工作

具有非 ASCII 字符的 Python 更改目录

python - elasticsearch映射没有JSON对象错误

python - 设置子模块依赖

python - 引用 iterrows() 中的下一个索引