当模块不在我的 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/