找不到模块错误:没有名为“src”的模块

Wav*_*ave 7 python python-3.x conda

每当我在终端错误 'ModuleNotFoundError: No module named 'src' 中运行 main.py 脚本时,就会发生。但是它在 PyCharm 中运行良好。

项目结构:

-project
  -resources
  -src
    -package1
      -script1.py
      -script2.py
    -package2
      -script3.py
    -main.py
Run Code Online (Sandbox Code Playgroud)

从终端我像这样运行 -

project$ python src/main.py
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

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

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

main.py
Run Code Online (Sandbox Code Playgroud)
-project
  -resources
  -src
    -package1
      -script1.py
      -script2.py
    -package2
      -script3.py
    -main.py
Run Code Online (Sandbox Code Playgroud)
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']
Run Code Online (Sandbox Code Playgroud)

tev*_*dar 7

https://docs.python.org/3/tutorial/modules.html#the-module-search-path

当导入名为 spam 的模块时,解释器首先搜索具有该名称的内置模块。如果未找到,它将搜索spam.py在变量给出的目录列表中命名的文件sys.pathsys.path从这些位置初始化:

  • 包含输入脚本的目录(或未指定文件时的当前目录)。
  • PYTHONPATH (目录名称列表,语法与 shell 变量 PATH 相同)。
  • 依赖于安装的默认值。

由于您提供了一个文件 ,src/main.py其包含的文件夹将成为搜索根。您可以在不指定src.部件的情况下导入模块。


You*_*f4k 6

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

import sys
sys.path.append('src/package1')
import script1
Run Code Online (Sandbox Code Playgroud)