如何在examples目录的example.py中导入my-package的basic模块?
如何在examples目录的脚本中导入Python包内的模块?
先明确你的项目结构(方便大家对齐场景):
my-package/ examples/ example.py my-package/ __init__.py basic.py main.py
先提个关键细节:Python的模块/包名不允许包含连字符,建议把内层的my-package文件夹改名为my_package——不然直接写from my-package import basic会触发语法错误(减号会被当成减法运算符),这也是你报错的核心原因之一。
接下来给你几个最优的导入方案,按实用程度排序:
1. 以可编辑模式安装包(强烈推荐)
这是开发Python包时最常用的方式,既能让你在任意目录导入包,又能实时同步源码修改。
操作步骤:
- 打开终端,切换到项目的根目录(就是包含
examples和my-package(或my_package)的那个目录) - 运行以下命令:
pip install -e .
安装完成后,不管你在哪个目录运行example.py,都可以直接写:
from my_package import basic
完全不会报错,而且后续修改包内的代码,不需要重新安装就能生效。
2. 临时将项目根目录加入Python搜索路径(适合快速测试)
如果只是临时测试不想安装包,可以在example.py的最开头添加代码,手动把项目根目录加入Python的模块搜索路径sys.path:
import sys from pathlib import Path # 获取项目根目录:当前脚本的父目录的父目录 project_root = Path(__file__).parent.parent sys.path.append(str(project_root)) # 现在就能正常导入了 from my_package import basic
这种方法的优点是不需要额外操作,缺点是只能在这个脚本里生效,换其他脚本还要重复加这段代码。
3. 设置PYTHONPATH环境变量(适合临时会话)
你也可以通过设置环境变量,让Python在全局搜索路径中包含你的项目根目录:
- Linux/macOS:在终端运行
export PYTHONPATH=/path/to/your/project/root:$PYTHONPATH
- Windows(CMD):
set PYTHONPATH=C:\path\to\your\project\root;%PYTHONPATH%
- Windows(PowerShell):
$env:PYTHONPATH = "C:\path\to\your\project\root;$env:PYTHONPATH"
设置完后,在当前终端会话里运行example.py就能直接导入包了,但关闭终端后环境变量就会失效。
内容的提问来源于stack exchange,提问作者Wasim Thabraze
相关产品推荐
相关产品推荐

