如何通过Linux终端将src目录标记为Sources Root解决Python导入问题
解决终端运行Python文件的模块导入问题
核心原因
PyCharm标记src为Sources Root,本质是把src目录和项目根目录同时加入了Python的模块搜索路径(sys.path),所以两种导入方式都能生效。终端运行时需要手动配置这个路径,无需修改现有代码。
解决方案
假设你的项目结构如下:
your_project/ ├─ src/ │ ├─ main.py │ └─ shared/ │ └─ timer.py └─ ...
方法一:临时设置PYTHONPATH(终端会话内有效)
在项目顶级目录(your_project/)下执行对应系统的命令,将项目根和src目录加入模块搜索路径:
- Linux/macOS:
export PYTHONPATH="$PWD:$PWD/src" - Windows(命令提示符):
set PYTHONPATH=%cd%;%cd%\src - Windows(PowerShell):
$env:PYTHONPATH = "$(Get-Location);$(Get-Location)\src"
之后直接运行文件即可:
python src/main.py
或者用模块模式运行(注意不要加.py后缀,这是你之前报错的原因之一):
python3.8 -m src.main
方法二:在代码中自动添加路径(无需手动设置环境变量)
在main.py的最顶部(所有导入语句之前)添加以下代码,自动将项目根和src目录加入sys.path:
import sys from pathlib import Path # 获取项目根目录(src的父目录)和src目录的绝对路径 project_root = Path(__file__).parent.parent.resolve() src_dir = Path(__file__).parent.resolve() # 确保路径已加入搜索列表 if str(project_root) not in sys.path: sys.path.append(str(project_root)) if str(src_dir) not in sys.path: sys.path.append(str(src_dir))
添加后,无论从哪个目录运行main.py,两种导入方式都能正常工作。
方法三:永久设置PYTHONPATH(不推荐,易影响其他项目)
将项目根和src目录的绝对路径添加到系统的PYTHONPATH环境变量中:
- Linux/macOS:编辑
~/.bashrc或~/.zshrc,添加:
执行export PYTHONPATH="/绝对路径/your_project:/绝对路径/your_project/src"source ~/.bashrc或source ~/.zshrc生效。 - Windows:在系统环境变量中添加
PYTHONPATH,值为C:\绝对路径\your_project;C:\绝对路径\your_project\src。
内容的提问来源于stack exchange,提问作者BHK
相关产品推荐
相关产品推荐

