每当我在终端中运行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']
4条答案
按热度按时间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.
部件。t40tm48m2#
您应该能够使用
project$ python -m src.main
运行它来源:https://qavalidation.com/2021/03/how-to-resolve-modulenotfounderror-no-module-named-src.html/
7qhs6swi3#
你可以使用sys.path添加一个python运行时的路径:
mklgxw1f4#
有机会你遇到这样的错误,因为你遵循的指导方针,告诉你把你的代码在
src/
文件夹,你正在使用PyCharm IDE。这是我的情况下,至少。我的配置都很好(我使用的是
pyproject.toml
),除了一件事...在PyCharm中,当导入一个内部模块时,我会得到如下内容src
部分是问题的根源,但如果没有它,PyCharm将不知道如何找到模块。在PyCharm Preferences中,我进入菜单
Project: <my_project>
/Project Structure
。右键单击右侧面板中的src/
文件夹,将其选择为Sources
。重命名不包含
src.
部件的所有内部引用测试,重建,现在应该没问题了。