在 python 包中运行脚本

ojy*_*ojy 6 python package

当模块不在我的 Python 路径中时,如何在模块内运行脚本?

考虑一些假想的包:

package/
     __init__.py
    main.py
    helper/  
        __init__.py
        script.py
    other/  
        __init__.py
        anotherscript.py
Run Code Online (Sandbox Code Playgroud)

说我们想跑script.py。当包在我的 Python 路径中时,这会完成这项工作:

python -m package.helper.script
Run Code Online (Sandbox Code Playgroud)

但如果不是这样呢?有没有办法告诉python模块的位置?就像是

python -m /path_to_my_package/package.helper.script
Run Code Online (Sandbox Code Playgroud)

(显然,以上不起作用)

编辑:

(1) 我正在寻找不涉及环境变量的解决方案。

(2)script.py包含相对导入,所以全路径script.py并不能解决问题。

And*_*kov -1

你的 script.py 应该是这样的:

#!/usr/bin/python

#here your python code

if __name__ == "__main__":
    #run you helper
Run Code Online (Sandbox Code Playgroud)

然后使您的脚本可执行:chmod +x script.py.

从控制台运行 ./path_to_my_package/package/helper/script.py 。