python - 在 python 包中运行脚本

标签 python package

当模块不在我的 Python 路径中时,如何在模块中运行脚本?
考虑一些虚构的包:

package/
     __init__.py
    main.py
    helper/  
        __init__.py
        script.py
    other/  
        __init__.py
        anotherscript.py
假设我们要运行 script.py .当包在我的 Python 路径中时,它可以完成这项工作:
python -m package.helper.script
但如果不是这样呢?有没有办法告诉python模块的位置?就像是
python -m /path_to_my_package/package.helper.script
(显然,以上不起作用)
编辑:
(1) 我正在寻找不涉及环境变量的解决方案。
(2) script.py包含相对导入,因此 script.py 的完整路径不能解决问题。

最佳答案

你可以这样做。我假设这是来自 cmd 提示符或批处理文件?

SET PYTHONPATH=..\..\path\to\my\package;c:\other\path\thats\needed
python -m package.helper.script

您也可以将完整路径传递给您的 python 文件。但这假设您的脚本不希望为其预设特定的环境路径。
python -m path_to_my_package/package/helper/script.py

编辑 - 如果您的 script.py 使用相对导入(并且您不想更改它),那么除了将该根路径获取到环境中之外,没有其他办法。如果需要,您可以在脚本中执行此操作,而不是在 cmd shell 或批处理文件中设置它。但它需要在某个地方完成。以下是在脚本中设置环境路径的方法:
import sys
sys.path.append(r'..\..\path\to\my\package')
import package.other.anotherscript

关于python - 在 python 包中运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26811953/

相关文章:

python - Tensorflow Estimator API 输入张量名称

python - 生成总和可被 n 整除的随机数列表

python - Pandas .loc 多重赋值与单个赋值

python - 如何避免Python包中的重复命名?

python - 使用 64 位 Windows 和 Python 3.3 安装 Python 包

linux - 我如何将 postinst 脚本与 fakeroot deb 包生成器一起使用

sql - 函数/包问题 PL/SQL

python - 我应该使用 orbited 还是 gevent 将 cometd 功能集成到 django 应用程序中

python - Django - 刷新响应?

delphi - 如何在同一个项目中针对不同版本的Delphi使用不同的包