如何在同包内以外部用户的语法导入自身Python包?
解决包内模块使用外部用户导入语法的问题
要让showcase.py和外部用户一样用import package的语法,只需要在文件开头动态把some_dir目录加入Python的搜索路径即可,具体实现如下:
- 在
showcase.py最顶部添加这段代码:import sys from pathlib import Path # 动态获取some_dir的绝对路径 # __file__是当前showcase.py的路径,parent往上走一级是package目录,再往上就是some_dir some_dir = str(Path(__file__).resolve().parent.parent) if some_dir not in sys.path: sys.path.append(some_dir) # 现在就能和外部用户一样导入了 import package # 示例:调用包内的功能 # package.some_api()
这样做的好处是不管你在哪里运行showcase.py,都能正确定位到some_dir,不会因为工作目录变化导致导入失败。如果后续包的目录结构有调整,只需要对应修改parent的调用层级即可(比如多一层目录就多调用一次.parent)。
内容的提问来源于stack exchange,提问作者DonPolettone
相关产品推荐
相关产品推荐

