我使用的是Python 2.7(32位),我的操作系统是64位Windows 7。
我正在尝试安装cx_Oracle模块。我已经运行了msi“cx_Oracle-5.1.2-10g.win32-py2.7.msi”,然后在cmd行上运行了“easy_install cx_Oracle”并收到了消息:
错误:无法找到vcvarsall.bat
我在这个网站上发现最好的解决方案是安装Microsoft Visual Studio 2008,我从我在这个网站上找到的链接做了。
现在当我在cmd行上运行“easy_install cx_Oracle”时,我收到以下消息,我不知道这意味着什么:
C:\ Python27> easy_install cx_Oracle搜索cx-Oracle Reading .... org / simple / cx_Oracle / Reading .... net / crew / atuining阅读 ... sourceforge.net最佳匹配:cx-Oracle 5.1.2 下载 http://prdownloads.sourceforge.net/cx-oracle/cx_Oracle-5.1.2.tar.gz? 下载处理cx_Oracle-5.1.2.tar.gz写作 C:\用户\ cnielsen \应用程序数据\本地\ TEMP \ easy_install的-44rupd \ cx_Oracle-5.1.2 \ setup.cfg运行cx_Oracle-5.1.2 \ setup.py -q bdist_egg --dist-dir C:\用户\ cnielsen \ appda TA \本地\ TEMP \ easy_install的-44rupd \ cx_Oracle-5.1.2 \蛋DIST-TMP的eyihnb Traceback(最近一次调用最后一次):文件 “C:\ Python27 \ Scripts \ easy_install-script.py”,第9行,in load_entry_point('setuptools == 0.8','console_scripts','easy_install')()文件 “build \ bdist.win-amd64 \ egg \ setuptools \ command \ easy_install.py”,行 1992年,在主文件中 “build \ bdist.win-amd64 \ egg \ setuptools \ command \ easy_install.py”,行 1979年,在with_ei_usage文件中 “build \ bdist.win-amd64 \ egg \ setuptools \ command \ easy_install.py”,行 1996年,在文件“C:\ Python27 \ lib \ distutils \ core.py”中,行 152,在设置中 dist.run_commands()run_commands中的文件“C:\ Python27 \ lib \ distutils \ dist.py”,第953行 self.run_command(cmd)文件“C:\ Python27 \ lib \ distutils \ dist.py”,第972行,在run_command中 cmd_obj.run()文件“build \ bdist.win-amd64 \ egg \ setuptools \ command \ easy_install.py”,行 380,在运行文件中 “build \ bdist.win-amd64 \ egg \ setuptools \ command \ easy_install.py”,行 623,在easy_install文件中 “build \ bdist.win-amd64 \ egg \ setuptools \ command \ easy_install.py”,行 653,在install_item文件中 “build \ bdist.win-amd64 \ egg \ setuptools \ command \ easy_install.py”,行 849,在install_eggs文件中 “build \ bdist.win-amd64 \ egg \ setuptools \ command \ easy_install.py”,行 1130,在build_and_install文件中 “build \ bdist.win-amd64 \ egg \ setuptools \ command \ easy_install.py”,行 1115,在run_setup文件中 “build \ bdist.win-amd64 \ egg \ setuptools \ sandbox.py”,第69行,in run_setup文件“build \ bdist.win-amd64 \ egg \ setuptools \ sandbox.py”, 第120行,在运行文件中 “build \ bdist.win-amd64 \ egg \ setuptools \ sandbox.py”,第71行,in 在文件中的文件“setup.py”,第350行 设置中的“C:\ Python27 \ lib \ distutils \ core.py”,第152行 dist.run_commands()run_commands中的文件“C:\ Python27 \ lib \ distutils \ dist.py”,第953行 self.run_command(cmd)文件“C:\ Python27 \ lib \ distutils \ dist.py”,第972行,在run_command中 cmd_obj.run()文件“build \ bdist.win-amd64 \ egg \ setuptools \ command \ bdist_egg.py”,第185行, 在运行文件中 “build \ bdist.win-amd64 \ egg \ setuptools \ command \ bdist_egg.py”,第171行, 在call_command文件“C:\ Python27 \ lib \ distutils \ cmd.py”中,第326行, 在run_command中 self.distribution.run_command(command)文件“C:\ Python27 \ lib \ distutils \ dist.py”,第972行,在run_command中 cmd_obj.run()文件“build \ bdist.win-amd64 \ egg \ setuptools \ command \ install_lib.py”,line 20,我运行文件“C:\ Python27 \ lib \ distutils \ command \ install_lib.py”, 第111行,在构建中 self.run_command('build_ext')文件“C:\ Python27 \ lib \ distutils \ cmd.py”,第326行,在run_command中 self.distribution.run_command(command)文件“C:\ Python27 \ lib \ distutils \ dist.py”,第972行,在run_command中 cmd_obj.run()文件“build \ bdist.win-amd64 \ egg \ setuptools \ command \ build_ext.py”,第52行, 在运行文件“C:\ Python27 \ lib \ distutils \ command \ build_ext.py”中,行 339,在奔跑 self.build_extensions()文件“C:\ Python27 \ lib \ distutils \ command \ build_ext.py”,第448行, build_exte nsions self.build_extension(ext)文件“build \ bdist.win-amd64 \ egg \ setuptools \ command \ build_ext.py”,第186行, 在build_extension文件中 “C:\ Python27 \ lib \ distutils \ command \ build_ext.py”,第498行,in build_exte nsion depends = ext.depends)文件“C:\ Python27 \ lib \ distutils \ msvc9compiler.py”,第473行,在编译中 self.initialize()文件“C:\ Python27 \ lib \ distutils \ msvc9compiler.py”,第383行,初始化 vc_env = query_vcvarsall(VERSION,plat_spec)文件“C:\ Python27 \ lib \ distutils \ msvc9compiler.py”,第299行, query_vcvarsal l 提高ValueError(str(list(result.keys())))ValueError:[u'path']
答案 0 :(得分:1)
重申Leandro所说的,如果您已经运行了.msi安装程序并且需要安装oracle instantclient,则不需要easy_install cx_Oracle。
正如您已经发现的那样,安装oracle instantclient意味着您只需要将其解压缩到系统中的文件夹中(例如:C:\ oraclient)。
要记住的一些事情:
确保使用的是cx_Oracle,instantclient和数据库服务器本身的相同版本(或兼容版本)。例如,instantclient v12不支持低于版本10的数据库服务器。另外,请确保使用所有32位或全部64位版本(包括cx_Oracle,instantclient和python本身)。
此外,您需要将环境变量ORACLE_HOME和PATH设置为解压缩oracle instantclient的目录(例如:C:\ oraclient),以避免您提到的ImportError(DLL加载失败:%1不是一个有效的Win32应用程序)。 ImportError只是意味着找不到所需的库。
答案 1 :(得分:0)
easy_install步骤试图在您的计算机上编译cx_Oracle源,但这不是必需的,因为您已经安装了MSI,这是一个预编译的二进制版本。
如果您安装了二进制Oracle客户端(例如,即时客户端),您安装的MSI应该足以使用cx_Oracle。
答案 2 :(得分:0)
经过3天的搜索,我终于解决了这个问题。
诀窍是:
vcredist_x86.exe
。
安装完成后,我运行easy_install cx_Oracle
,不再看到原始错误消息。Python 2.7.5
,确保它是32位版本(x86)答案 3 :(得分:0)
由于cx_Oracle仅使用Oracle TNS名称工具进行连接,因此您可能还需要设置TNS_ADMIN环境变量以指示要使用的TNS名称文件所在的位置。那个问题也让我感到厌烦。
答案 4 :(得分:0)
对于Windows 7 64位,您需要“Windows amd64 Installer(Oracle 11g,Python 3.3)”。它也适用于英特尔。
我没有InstantClient,而是使用Oracle 11.2安装中的SQL * Plus(64位)。