python - 为什么 64 位 `pip install MySQL-python` 指的是 `C:\Program Files (x86)\`?
问题描述
在具有 64 位 Python 环境的 Windows 上,包含对编译源代码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 位。
作为一种解决方法,我在下面示例中给出的自定义位置完全安装了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
默认情况下总是查看C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\
64 位 Python 的错误目录?这是一个错误,还是我错过了任何设置?投入将受到高度赞赏。
与编译器调用相关的部分屏幕输出:
...
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"
正如您在上面看到的,即使路径不存在,它也会告诉编译器进行引用。如果感兴趣,也请参考我的另一篇文章。
解决方案
我之前遇到过这样的问题。有几件事要立即检查,
- 检查 PATH 环境变量。确保 64 位 python 在 PATH 中。从 PATH 变量中删除其他 python 引用。
- 开始-> 运行。键入
%userprofile%\AppData\Roaming\Python
。通常 Python 会在这个位置安装脚本。确保有冗余。
如果上述步骤无法解决,我可以根据上述结果添加更多步骤。祝你好运。
推荐阅读
- glidejs - 如何访问“build.after”中的组件大小 [Glide.js v 3.1.0]
- c# - Azure B2C 使用 Graph API 登录
- arrays - 将包含两个特定字符串的文件列表到bash中的数组中
- linux - 具有可选多平台驱动程序接口的 Linux 设备驱动程序
- javascript - 如何更改javascript构造函数中的现有参数
- mysql - 孤立表崩溃 MySql
- javascript - 当用户单击使用 jquery 添加更多锚标记时更改选择时获取 Null 值?
- c# - 启动单击一次应用程序 - 未找到文件
- java - 在 Android 上使用 ACRA 发送电子邮件
- node.js - 突变后Node.js graphql重新获取