为什么64位`pip install MySQL-python`指向`C:\ Program Filesx86\`?

问题描述

在Windows(带有64位Python环境)上,pip install MysqL-python包含对Visual C++ for Python调用,用于编译源代码认情况下,此调用始终给出错误的参数,告诉编译器查看C:\Program Files (x86)\MysqL\MysqL Connector C 6.0.2\中的包含.h文件.lib文件C:\Program Files (x86)\包含32位资源,而不是64位资源。

一种解决方法,我在下面的示例中指定的自定义位置中完全安装了{strong> 64位版本的MysqL Connector C,并调用pip install命令使用--global-option来指定包含和lib文件的路径。参见示例命令:

pip install MysqL-python ^
 --force-reinstall --no-cache-dir ^
 --global-option=build_ext ^
 --global-option="-IC:\my\install\MysqL-x64\MysqL Connector C 6.0.2\include" ^
 --global-option="-LC:\my\install\MysqL-x64\MysqL Connector C 6.0.2\lib\opt" ^
 --verbose

我的问题是:

为什么认情况下pip install MysqL-python总是使用64位Python查找错误C:\Program Files (x86)\MysqL\MysqL Connector C 6.0.2\目录?这是一个错误,还是我错过了任何设置?输入将不胜感激。

与编译器调用相关的部分屏幕输出

...
  Created temporary directory: c:\users\admini~1\appdata\local\temp\pip-record-us8ukn
    Running setup.py install for MysqL-python ...     Running command 'C:\my\test-pip\venv-
x64\Scripts\python.exe' -u -c 'import sys,setuptools,tokenize; sys.argv[0] = 
'"'"'c:\\users\\admini~1\\appdata\\local\\temp\\pip-install-2tppyl\\MysqL-python\\setup.py'"'"'; 
__file__='"'"'c:\\users\\admini~1\\appdata\\local\\temp\\pip-install-2tppyl\\MysqL-
python\\setup.py'"'"';f=getattr(tokenize,'"'"'open'"'"',open)
(__file__);code=f.read().replace('"'"'\r\n'"'"','"'"'\n'"'"');f.close();exec(compile(code,__file__,'"'"'exec'"'"'))' build_ext '-IC:\my\install\MysqL-x64\MysqL Connector C 6.0.2\include' '-
LC:\my\install\MysqL-x64\MysqL Connector C 6.0.2\lib\opt' install --record 
'c:\users\admini~1\appdata\local\temp\pip-record-us8ukn\install-record.txt' --single-version-externally-
managed --compile --install-headers 'C:\my\test-pip\venv-x64\include\site\python2.7\MysqL-python'
    running build_ext
    building '_MysqL' extension
    creating build
    creating build\temp.win-amd64-2.7
    creating build\temp.win-amd64-2.7\Release
    C:\Users\Administrator\AppData\Local\Programs\Common\Microsoft\Visual C++ for 
Python\9.0\VC\Bin\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -Dversion_info=(1,2,5,'final',1) -
D__version__=1.2.5 "-IC:\Program Files (x86)\MysqL\MysqL Connector C 6.0.2\include" "-
IC:\my\install\MysqL-x64\MysqL Connector C 6.0.2\include" -IC:\my\test-pip\venv-x64\include -IC:\my\test-
pip\venv-x64\PC /Tc_MysqL.c /Fobuild\temp.win-amd64-2.7\Release\_MysqL.obj /Zl
    _MysqL.c
...

如上所述,它告诉编译器即使路径不存在也要引用"-IC:\Program Files (x86)\MysqL\MysqL Connector C 6.0.2\include"。如果有兴趣,请参阅我的another post

解决方法

我以前遇到过这类问题。要立即检查的几件事,

  1. 检查PATH环境变量。确保PATH中有64位python。从PATH变量中删除其他python引用。
  2. 开始->运行。输入%userprofile%\AppData\Roaming\Python。通常,Python将在此位置安装脚本。确保存在冗余。

如果上述步骤不能解决,我可以根据上述结果添加更多步骤。祝你好运。