#PYTHON# 编译并安装第三方模块遇到的问题

2024-06-21 05:38

本文主要是介绍#PYTHON# 编译并安装第三方模块遇到的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天在通过easy_install安装gensim的时候,出现了一堆莫名其妙的错误。

然后我将gensim库下载到本地,用python setup.py install安装,没有想到出现了同样的错误提示。于是,今天吐槽一下解决方案: 为何我们有时安装的时候,又没有提示如此的错误呢,原因是C文件,在安装的时候需要进行编译,就需要用到其编译器,主要是为了让python找到相应的编译器。


不幸的是python2.7默认的编译器是VS2008.  我们有二种方式,来找出其默认的编译器:

<span style="font-family:Microsoft YaHei;">>>> import sys
>>> sys.version
'2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)]'
>>></span>

For this version of Visual C++  Use this compiler version
Visual C++ 4.x                  MSC_VER=1000
Visual C++ 5                    MSC_VER=1100
Visual C++ 6                    MSC_VER=1200
Visual C++ .NET                 MSC_VER=1300
Visual C++ .NET 2003            MSC_VER=1310
Visual C++ 2005                 MSC_VER=1400
Visual C++ 2008                 MSC_VER=1500
Visual C++ 2010                 MSC_VER=1600
Visual C++ 2012                 MSC_VER=1700
Visual C++ 2013                 MSC_VER=1800

<span style="font-family:Microsoft YaHei;"><strong><span style="font-family:Microsoft YaHei;">MSC v.1500对应VS2008</span></strong></span>

找到报错的源文件msvc9compiler.py(“<python安装目录>\Lib\distutils\msvc9compiler.py”),发现这么一段代码:

if not productdir or not os.path.isdir(productdir):toolskey = "VS<span style="margin: 0px; padding: 0px; outline: 0px; border: 0px; color: rgb(64, 64, 64); font-family: 'Lucida Sans Unicode', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', Verdana, Aril, sans-serif; font-size: 16px; line-height: 24px;">%0.f0</span>COMNTOOLS"toolsdir = os.environ.get(toolskey, None)</span>

通过理解源码,python解释器,会依搜索注册表中VS的目录,接着搜索环境变量为VS90COMNTOOLS的目录(msvc9compiler.py文件中的get_build_version()函数,直接调用其,其值是9.0,对应的正是VS90COMNTOOLS环境变量),结果我看了一下我的电脑环境变量没有该值,只有VS120COMNTOOLS,纳闷,原来我安装的是VS2013,OK,我们可以开始修改了。


解决方案一:安装Vs2008(实测)

完全的无脑流,安装完问题直接解决。


解决方案二:安装Vs2010(未测试)

打开“<python安装目录>\Lib\distutils\msvc9compiler.py”

找到 toolskey = “VS%0.f0COMNTOOLS” % version

直接修改为 toolskey = “VS100COMNTOOLS” (VS2010)

                                     “VS100COMNTOOLS” (VS2010)


这篇关于#PYTHON# 编译并安装第三方模块遇到的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080357

相关文章

linux生产者,消费者问题

pthread_cond_wait() :用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast来唤醒它。 pthread_cond_wait() 必须与pthread_mutex 配套使用。pthread_cond_wait()函数一进入wait状态就会自动release mutex。当其他线程通过pthread

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

C++工程编译链接错误汇总VisualStudio

目录 一些小的知识点 make工具 可以使用windows下的事件查看器崩溃的地方 dumpbin工具查看dll是32位还是64位的 _MSC_VER .cc 和.cpp 【VC++目录中的包含目录】 vs 【C/C++常规中的附加包含目录】——头文件所在目录如何怎么添加,添加了以后搜索头文件就会到这些个路径下搜索了 include<> 和 include"" WinMain 和

C/C++的编译和链接过程

目录 从源文件生成可执行文件(书中第2章) 1.Preprocessing预处理——预处理器cpp 2.Compilation编译——编译器cll ps:vs中优化选项设置 3.Assembly汇编——汇编器as ps:vs中汇编输出文件设置 4.Linking链接——链接器ld 符号 模块,库 链接过程——链接器 链接过程 1.简单链接的例子 2.链接过程 3.地址和

2024.6.24 IDEA中文乱码问题(服务器 控制台 TOMcat)实测已解决

1.问题产生原因: 1.文件编码不一致:如果文件的编码方式与IDEA设置的编码方式不一致,就会产生乱码。确保文件和IDEA使用相同的编码,通常是UTF-8。2.IDEA设置问题:检查IDEA的全局编码设置和项目编码设置是否正确。3.终端或控制台编码问题:如果你在终端或控制台看到乱码,可能是终端的编码设置问题。确保终端使用的是支持你的文件的编码方式。 2.解决方案: 1.File -> S

VMware9.0详细安装

双击VMware-workstation-full-9.0.0-812388.exe文件: 直接点Next; 这里,我选择了Typical(标准安装)。 因为服务器上只要C盘,所以我选择安装在C盘下的vmware文件夹下面,然后点击Next; 这里我把√取消了,每次启动不检查更新。然后Next; 点击Next; 创建快捷方式等,点击Next; 继续Cont

vcpkg安装opencv中的特殊问题记录(无法找到opencv_corexd.dll)

我是按照网上的vcpkg安装opencv方法进行的(比如这篇:从0开始在visual studio上安装opencv(超详细,针对小白)),但是中间出现了一些别人没有遇到的问题,虽然原因没有找到,但是本人给出一些暂时的解决办法: 问题1: 我在安装库命令行使用的是 .\vcpkg.exe install opencv 我的电脑是x64,vcpkg在这条命令后默认下载的也是opencv2:x6

Python 字符串占位

在Python中,可以使用字符串的格式化方法来实现字符串的占位。常见的方法有百分号操作符 % 以及 str.format() 方法 百分号操作符 % name = "张三"age = 20message = "我叫%s,今年%d岁。" % (name, age)print(message) # 我叫张三,今年20岁。 str.format() 方法 name = "张三"age