【问题标题】:cx_Oracle module installation error messagecx_Oracle 模块安装错误信息
【发布时间】:2013-08-16 14:34:40
【问题描述】:

我使用的是 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 阅读 ....org/simple/cx_Oracle/ 阅读 ....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:\users\cnielsen\appdata\local\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\local\temp\easy_install-44rupd\cx_Oracle-5.1.2\egg-dist-tmp-eyihnb Traceback(最近一次通话最后一次):文件 “C:\Python27\Scripts\easy_install-script.py”,第 9 行,在 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() 文件“C:\Python27\lib\distutils\dist.py”,第 953 行,在 run_commands 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 行,在 run_setup 文件 "build\bdist.win-amd64\egg\setuptools\sandbox.py", 第 120 行,在运行文件中 “build\bdist.win-amd64\egg\setuptools\sandbox.py”,第 71 行,在 文件中的文件“setup.py”,第 350 行 “C:\Python27\lib\distutils\core.py”,第 152 行,在设置中 dist.run_commands() 文件“C:\Python27\lib\distutils\dist.py”,第 953 行,在 run_commands 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”,行 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_extensions 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 行,在 build_extension 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 raise ValueError(str(list(result.keys()))) ValueError: [u'path']

【问题讨论】:

    标签: oracle cx-oracle


    【解决方案1】:

    重申 Leandro 所说的,如果您已经运行了 .msi 安装程序并且需要安装 oracle 即时客户端,则不需要 easy_install cx_Oracle。

    正如您已经发现的那样,安装 oracle 即时客户端意味着您只需将其解压缩到系统中的文件夹中(例如:C:\oraclient)。

    注意事项:

    确保您使用相同版本(或兼容版本)的 cx_Oracle、instantclient 和数据库服务器本身。例如,instantclient v12 不支持版本 10 以下的数据库服务器)。此外,请确保您使用的是所有 32 位或所有 64 位版本(包括 cx_Oracle、instantclient 和 python 本身)。

    另外,您需要将环境变量 ORACLE_HOME 和 PATH 设置为您解压缩 oracle 即时客户端的目录(例如:C:\oraclient),以避免您提到的 ImportError(DLL 加载失败:%1 不是有效的 Win32 应用程序)。 ImportError 只是意味着它找不到所需的库。

    【讨论】:

      【解决方案2】:

      easy_install 步骤试图在您的机器上编译 cx_Oracle 源代码,但这不是必需的,因为您已经安装了 MSI,它是一个预编译的二进制版本。

      您安装的 MSI 应该足以使用 cx_Oracle,前提是您还安装了二进制 Oracle 客户端(例如,instantclient)。

      【讨论】:

      • 谢谢。我不知道如何安装 Oracle 即时客户端,因为没有 msi,但我确实下载了它并将其路径添加到 ENV PATH。然后我重新安装了 Python 2.7 32 位。现在我似乎有了 cx_Oracle 模块,但是当我尝试在 Python 脚本中调用该模块时收到这条新消息: ... import cx_Oracle as oracle File "build\bdist.win32\egg\cx_Oracle.py", line 7,在 文件 "build\bdist.win32\egg\cx_Oracle.py" 第 6 行,在 bootstrap ImportError: DLL load failed: %1 is not an valid Win32 application. >>>
      【解决方案3】:

      由于 cx_Oracle 仅使用 Oracle TNS 名称工具进行连接,您可能还需要设置 TNS_ADMIN 环境变量以指示要使用的 TNS 名称文件所在的位置。这个问题也困扰着我。

      【讨论】:

        【解决方案4】:

        对于 Windows 7 64 位,您需要“Windows amd64 安装程序(Oracle 11g,Python 3.3)”。它也适用于英特尔。

        我没有 InstantClient,但使用 Oracle 11.2 安装(64 位)中的 SQL*Plus。

        【讨论】:

          【解决方案5】:

          经过3天的搜索,我终于解决了这个问题。

          诀窍是:

          1. 安装vcredist_x86.exe。 安装后,我运行 easy_install cx_Oracle 并不再看到原始错误消息。
          2. 重新安装Python 2.7.5,确保是32位版本(x86)
          3. 重新安装我的 IDE “PyScripter”,确保它是 32 位版本 (x86)

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-24
          • 2017-12-10
          • 2017-09-10
          • 1970-01-01
          • 2019-08-23
          • 1970-01-01
          • 2016-01-27
          • 1970-01-01
          相关资源
          最近更新 更多