已在所有文件夹创建__init__.py,Python导入语句仍无法工作?
问题解决方法
你的核心问题是Python的模块搜索路径里没有包含basepackage所在的桌面目录,导致无法找到顶层包package1或basepackage。另外你代码里还有个拼写错误:pipy应该是p1py。下面给你几种可行的解决办法:
方法一:临时在脚本中添加路径(快速生效)
在p11py.py的最开头添加以下代码,把桌面路径加入Python的模块搜索路径:
import sys from pathlib import Path # 计算basepackage所在的桌面路径 desktop_dir = Path(__file__).resolve().parent.parent.parent sys.path.append(str(desktop_dir)) # 正确导入并调用函数 from package1.p1.p1py import func1 func1() # 或者用别名的方式 import package1.p1.p1py as p1_module p1_module.func1()
解释:Path(__file__).resolve()获取当前脚本的绝对路径,连续三次parent就能回到桌面目录(因为你的脚本在basepackage\package1\p11\下),把这个路径加入sys.path后,Python就能找到package1这个包了。
方法二:设置PYTHONPATH环境变量(永久生效)
把桌面路径添加到系统的PYTHONPATH环境变量中,这样所有Python脚本都能识别到basepackage下的包:
- Windows系统:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」栏点击「新建」,变量名填
PYTHONPATH,变量值填C:\Users\shiv\Desktop - 保存后重启你的IDE或终端,之后直接用以下代码导入即可:
from package1.p1.p1py import func1 func1()
方法三:将basepackage作为可编辑包安装(适合长期项目)
如果这是一个长期维护的项目,推荐把basepackage安装为可编辑包,这样无论你在哪个路径运行脚本都能正常导入:
- 在
basepackage目录下创建setup.py文件,内容如下:from setuptools import setup, find_packages setup( name="basepackage", version="0.1.0", packages=find_packages(), ) - 打开终端,切换到
basepackage目录(cd C:\Users\shiv\Desktop\basepackage),运行以下命令:pip install -e . - 之后你就可以在任何位置的脚本中直接导入:
from package1.p1.p1py import func1 func1()
内容的提问来源于stack exchange,提问作者shardul
相关产品推荐
相关产品推荐

