You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用python -m执行模块时无法导入已安装点式Python包求助

问题分析与解决建议

核心原因

当你用python -m执行模块时,Python会将当前工作目录(也就是你执行命令时的src目录)加入模块搜索路径的最前端。此时,Python会优先加载本地src目录下的com包,而这个本地com包的ziath子包只包含你项目的ritrack模块,并不包含通过pip安装的acacus和driver子包——这就导致了导入失败。

而直接运行脚本时,Python的模块搜索路径第一个元素是脚本所在的目录(src/com/ziath/ritrack/manu),本地的com包不在搜索路径里,Python会直接从site-packages(pip安装包的位置)加载完整的com.ziath包,所以能正常导入。

解决方法

方法1:将你的项目包安装到site-packages

在项目根目录(C:\Users\nbenn\GitHub\RITrackManu)创建一个setup.py,内容如下:

from setuptools import setup, find_packages

setup(
    name='com.ziath.ritrack',
    version='0.1',
    packages=find_packages('src'),
    package_dir={'': 'src'},
    install_requires=['com.ziath.acacus', 'com.ziath.driver'],
    python_requires='>=3.7'
)

然后执行命令:

pip install -e .

这会把你的项目包以可编辑模式安装到site-packages,此时com.ziath包会整合acacus、driver和ritrack三个子包,用python -m执行时就能正常找到依赖了。

方法2:临时调整模块搜索路径

在RITrackManu.py的最开头添加以下代码,强制让Python优先从site-packages加载com包:

import sys
# 移除当前工作目录(src)的搜索优先级
if sys.path[0] == 'C:\\Users\\nbenn\\GitHub\\RITrackManu\\src':
    sys.path.pop(0)

这种方法比较临时,适合快速测试,但不推荐作为长期解决方案。

方法3:避免包名冲突

如果可能,调整你的项目包结构,不要和已安装的包共用com.ziath根路径。比如把项目包名改成com.ziathritrack,这样就不会和com.ziath.acacus、com.ziath.driver产生路径冲突。

内容的提问来源于stack exchange,提问作者Neil Benn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 06:25:59