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

时间:2019-07-17 14:51:00

标签: python python-3.x conda

每当我在终端错误'ModuleNotFoundError中运行main.py脚本时:不会发生名为'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']

2 个答案:

答案 0 :(得分:3)

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

  

导入名为垃圾邮件的模块时,解释器首先搜索具有该名称的内置模块。如果找不到,它将在变量spam.py给定的目录列表中搜索名为sys.path的文件。 sys.path从以下位置初始化:

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

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

答案 1 :(得分:0)

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

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