假设我有一个打印sys.path
的文件(foo.py
# from path.to.folder import foo
# from another.path.to.folder import bar
import sys
for p in sys.path:
print(p)
我的问题是取消注释import
语句并通过MingW64 (在我的例子中是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\2.7.12\DLLs
C:\Python\2.7.12\lib
C:\Python\2.7.12\lib\plat-win
C:\Python\2.7.12\lib\lib-tk
C:\Python\2.7.12
问题似乎是MinGW没有将export PYTHONPATH="C:\path\to\folder:C:\another\path\to\folder"
解释为两个独立的路径。它将一个格式错误的路径传递给Python,而Python不知道如何处理它。
MinGW的Posix path conversion文档似乎没有涵盖此场景,但我认为这是一个非常常见的用例。
如何在MinGW中设置Python环境变量,使其向Python发送两条路径?
发布于 2018-07-31 04:12:40
事实证明,Posix path conversion documentation确实涵盖了这种情况:
包含;的
参数被视为Windows路径列表,不会进行转换。
将中间的冒号转换为分号可以解决此问题:
export PYTHONPATH="C:\path\to\folder;C:\another\path\to\folder"
https://stackoverflow.com/questions/51601468
复制相似问题