在 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"
假设我有一个文件 (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"