在 MinGW 中指定多个 PYTHONPATH 值

Specifying multiple PYTHONPATH values in MinGW

假设我有一个文件 (foo.py) 打印 sys.path:

# from path.to.folder import foo
# from another.path.to.folder import bar

import sys

for p in sys.path:
    print(p)

我的问题是您通过 MingW64 取消注释 import 语句和 运行 文件(在我的例子中,Git Bash)- Python将无法正确定位模块,产生 ImportError.

运行 注释掉导入的文件产生此输出:

user@host MINGW64 /
$ export PYTHONPATH="C:\path\to\folder:C:\another\path\to\folder"
$ python foo.py

C:\some\path
C:\path\to\folder:C:\another\path\to\folder
C:\Windows\system32\python27.zip
C:\Python.7.12\DLLs
C:\Python.7.12\lib
C:\Python.7.12\lib\plat-win
C:\Python.7.12\lib\lib-tk
C:\Python.7.12

问题似乎是 MinGW 没有将 export PYTHONPATH="C:\path\to\folder:C:\another\path\to\folder" 解释为两条单独的路径。它将一个格式错误的路径传递给 Python,它不知道如何处理它。

MinGW 的 Posix path conversion 文档似乎没有涵盖这种情况,但我认为这是一个非常常见的用例。

如何在 MinGW 中设置 PYTHONPATH 环境变量,以便它向 Python 发送两条路径?

事实证明 Posix path conversion documentation 涵盖了这种情况:

Arguments containing a ; are considered to be Windows path lists and are not converted.

将中间的冒号转换为分号可解决问题:

export PYTHONPATH="C:\path\to\folder;C:\another\path\to\folder"