ModuleNotFoundError:Ubuntu上没有名为“ package”的模块

问题描述 投票:0回答:1

我有一个结构如下的python项目:

package/
  __init__.py
  conf/
    my_conf.py
    __init__.py
  lib/
    tasks/
      somecode.py
      __init__.py

somecode.py中,我从conf导入,如:

from package.conf.my_conf import somevar

当我尝试使用以下命令在命令行中执行代码时:

python3 package/lib/tasks/somecode.py 

我收到以下错误:

ModuleNotFoundError: No module named 'package'

这种情况在Ubuntu 18上发生,确实很奇怪,因为我在Mac上运行了完全相同的命令,没有任何问题。值得一提的是,我在Ubuntu上有python 3.6,在Mac上有3.7。这有什么不同吗?

我一直在阅读有关SO的文章,并且相对导入已经不见了,但我认为这不是我的问题,因为否则它将无法在Mac上运行。但是,我试了一下,并将代码更新为:

from ...conf.my_conf import somevar

而且我现在收到一个新的错误:

ValueError: attempted relative import beyond top-level package

我还在Ubuntu上将我的PYTHONPATH设置为:

/usr/local/lib/python3.6/dist-packages/:/home/myusername/package/

而且那也没有帮助。这变得很麻烦,而且我一直找不到能够解释这一切的好资源。因此,非常感谢您的帮助。

python
1个回答
0
投票
尝试将导入内容更改为

from .package.conf.my_conf import somevar

[在包之前注意Dot(。)。它告诉python查看当前目录,而不是进入并搜索python库目录。 
© www.soinside.com 2019 - 2024. All rights reserved.