我有一个包含以下层次结构的包
my_package/__init__.py
script_a.py
scripts_dir/__init__.py
script_b.py
my_package/__init__.py
module_a.py
module_b.py
module_a和module_b包含我在script_a和script_b中使用的函数和类定义(它们是独立的脚本并包含main)
当我从script_a.py中输入一些东西时,说明module_a.py一切都很好。
我的问题是
我不确定我是否应该使用相对导入,或者将my_package添加到sys.path然后使用类似的东西更有意义
from my_package.module_a import the_funky_func
我想避免使用-m
参数调用解释器
更新
从我迄今为止找到的答案中我得出结论,我有3个选项
编写一个设置以将包包含到我的PYTHONPATH中,以便所有脚本无论它们在何处都可以调用模块
在调用解释器时使用-m
参数
做一些sys.path hack
还有其他我不知道的选择吗?
答案 0 :(得分:0)
myproject/
|--package1
|--\__init__.py
|--script_a.py
|--script_b.py
|--package2
|--module_a.py
|--module_b.py
您可以使用以下2行将myproject
路径附加到sys路径。它可以避免相对导入,并避免在命令行中使用-m
import sys
import sys.path.append("/absolute/path/to/your/myproject")
在myproject
档案script_a.py
中,如果您导入module_a.py
,则会显示
import sys
import sys.path.append("/absolute/path/to/your/myproject")
import package2.module_a as ma