python-3.x 模块未找到错误:没有名为“src”的模块

ijxebb2r  于 2023-04-22  发布在  Python
关注(0)|答案(4)|浏览(170)

每当我在终端中运行main.py时,我都会得到错误
ModuleNotFoundError:没有名为“src”的模块
但它在PyCharm中运行良好。
项目结构:

-project
  -resources
  -src
    -package1
      -script1.py
      -script2.py
    -package2
      -script3.py
    -main.py

这是我在终端中运行的:

project$ python src/main.py

错误:

Traceback (most recent call last):
  File "src/main.py", line 1, in <module>
    from src.package1 import script1
ModuleNotFoundError: No module named 'src'

我已经尝试将文件夹/包'src'的绝对路径添加到sys.path

main.py
from src.package1 import script1
from src.package1 import script2
from src.package2 import script3

if name=="__main__":
  ...
  ...
sys.path

current sys.path is ['/home/xyz/Projects/project/src', '/home/xyz/Apps/anaconda3/envs/project/lib/python37.zip', '/home/xyz/Apps/anaconda3/envs/project/lib/python3.7', '/home/xyz/Apps/anaconda3/envs/project/lib/python3.7/lib-dynload', '/home/xyz/Apps/anaconda3/envs/project/lib/python3.7/site-packages', 'src/main.py']
5t7ly7z5

5t7ly7z51#

https://docs.python.org/3/tutorial/modules.html#the-module-search-path
当导入一个名为spam的模块时,解释器首先搜索一个具有该名称的内置模块。如果没有找到,它就会在变量sys.path给出的目录列表中搜索一个名为spam.py的文件。sys.path从以下位置初始化:

  • 包含输入脚本的目录(如果未指定文件,则为当前目录)。
  • PYTHONPATH(目录名列表,语法与shell变量PATH相同)。
  • 与安装相关的默认值。

由于您提供了一个文件src/main.py,因此其包含文件夹将成为搜索根目录。您可以导入模块而无需指定src.部件。

7qhs6swi

7qhs6swi3#

你可以使用sys.path添加一个python运行时的路径:

import sys
sys.path.append('src/package1')
import script1
mklgxw1f

mklgxw1f4#

有机会你遇到这样的错误,因为你遵循的指导方针,告诉你把你的代码在src/文件夹,你正在使用PyCharm IDE。这是我的情况下,至少。
我的配置都很好(我使用的是pyproject.toml),除了一件事...在PyCharm中,当导入一个内部模块时,我会得到如下内容

from src.my_package.utils.log import log_d

src部分是问题的根源,但如果没有它,PyCharm将不知道如何找到模块。
在PyCharm Preferences中,我进入菜单Project: <my_project>/Project Structure。右键单击右侧面板中的src/文件夹,将其选择为Sources
重命名不包含src.部件的所有内部引用

from my_package.utils.log import log_d

测试,重建,现在应该没问题了。

相关问题