关于python导入包的问题

万俟淋曦
人工智能领域优质创作者
博客专家认证
2023-11-05 16:15:16

大家好,我的文件结构如下:

 想在avoid.py中导入包geometry.py。

结果from ..pkg import geometry会报错

 搜索只搜到说是不能相对引用,但没说这样要怎么导入包。有解决方法的也不能满足我的要求,如下:

方法一: 有说把geometry.py和avoid.py放在一起,使用绝对引用,但我需要的是把包放到公共位置,供detection和movetion使用

有大佬知道解决办法能否指点一二。

...全文
163 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-11-05
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/8024469, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
原子星 2023-11-05
  • 打赏
  • 举报
回复

detection和movetion只是文件夹不是包,缺了__init__.py,放个空的__init__.py文件进去。另外,加个根包,根包下面也要放__init__.py,如:
rootpkg
detection
movetion
pkg
引用的时候就是,from rootpkg.pkg import geometry

万俟淋曦 2023-11-05
  • 举报
回复
@原子星 你好,还有几个疑问:1.detection和movetion本来不是包,只是文件夹,他们必须要是包才能引用pkg包吗?2.rootpkg是要放到pkg、detection和movetion的上一级吗,这样不就相当于把文件夹detection和movetion放到包里了吗?这里不太明白。我想实现的只是文件夹detection和movetion里的文件能引用公共包pkg
原子星 2023-11-06
  • 举报
回复
@万俟淋曦 如果是文件夹的话就不用放__init__.py了。 找不到包的原因是Python环境搜索不到geometry的包路径,Python搜索包的时候有几个途径: 1. 当前脚本所在的目录 2. PYTHONPATH环境变量指定的路径 3. 标准库路径 4. 第三方库路径 你可以手动指定下包的路径,有几种方式: 1.修改操作系统环境变量PYTHONPATH增加你要引用的包的路径 2.在运行的代码中修改PYTHONPATH的路径,增加你要引用的包路径 import os # 获取当前的PYTHONPATH pypath = os.environ.get('PYTHONPATH', '') # 在PYTHONPATH中添加新的路径 os.environ['PYTHONPATH'] = 'd:\\path\\pkg;' + pypath ##路径只是举例,可以替换成你自己的路径 # 导入模块 import pkg ###### 显然方法1会更具有灵活性,把绝对路径写到代码中肯定不是个好主意。可以写个批处理文件(windows环境.bat或.cmd文件,linux环境.sh)来先准备好运行环境再执行。
万俟淋曦 2023-11-06
  • 举报
回复
@原子星 👌明白了,谢谢啦

5,783

社区成员

发帖
与我相关
我的任务
社区描述
人生苦短,我用python
社区管理员
  • Python 学习者
  • 嗨学编程
  • 松鼠爱吃饼干
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎来到Python学习者们的社区,

 

本社区分享你需要的文章、问题解答、技术互助、学习资源、面试系列等等

 

欢迎你的加入,祝你学有所成~

试试用AI创作助手写篇文章吧