Pergunta

Eu estou tentando instalar o cx_Oracle para Python 2.6, mas está falhando. Eu não sei o suficiente sobre C ou MS Vis. compilador de estúdio para abordagem ainda corrigi-lo eu mesmo.

Isto é o que é emitido na linha de comando:

C:\pydev\cx_Oracle-5.0.1>C:\python26\python setup.py install
running install
running build
running build_ext
building 'cx_Oracle' extension
C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -IC:\Oracle\instantclient\sdk\include -IC:\p
ython26\include -IC:\python26\PC /Tccx_Oracle.c /Fobuild\temp.win32-2.6-11g\Release\cx_Oracle.obj -DBUILD_VERSION=5.0.1
cx_Oracle.c
c:\pydev\cx_oracle-5.0.1\StringVar.c(392) : warning C4018: '>' : signed/unsigned mismatch
c:\pydev\cx_oracle-5.0.1\StringVar.c(417) : warning C4018: '>' : signed/unsigned mismatch
c:\pydev\cx_oracle-5.0.1\ObjectVar.c(117) : warning C4018: '<' : signed/unsigned mismatch
c:\pydev\cx_oracle-5.0.1\ObjectVar.c(134) : warning C4018: '<' : signed/unsigned mismatch
c:\pydev\cx_oracle-5.0.1\Variable.c(331) : error C2036: 'void *' : unknown size
c:\pydev\cx_oracle-5.0.1\Variable.c(878) : warning C4244: '=' : conversion from 'sb2' to 'sb1', possible loss of data
c:\pydev\cx_oracle-5.0.1\Variable.c(914) : warning C4018: '<' : signed/unsigned mismatch
error: command '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe"' failed with exit status 2

Alguém tem alguma idéia de como consertar isso? (Eu também pode ter um problema com esse arquivo cl.exe, eu acho que eu lembro de ter visto isso como um problema em outro lugar, mas eu tenho quatro máquinas Windows que poderia ter tido problema lá.).

----------------------------- EDIT -------------- ---------------

A razão de eu não usar o instalador de pré-compilados é porque quando tento executar o módulo recebo a seguinte:

    Python 2.6.3 (r263rc1:75186, Oct  2 2009, 20:40:30) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import cx_Oracle
    Traceback (most recent call last):
      File "", line 1, in 
    ImportError: DLL load failed: The specified module could not be found.

Eu assumo que significa que ele não tenha sido devidamente instalados. Se alguém pode me dizer o que eu fiz de errado aqui, que também seria uma resposta perfeitamente aceitável.

----------------------------- EDIT2 -------------- ---------------

Eu tenho recuperado todas arquivos de cliente Básico da Oracle versão 11.1.0.7. Eu não tentei instalar um cliente mais substancial. Eu estou baixando um agora.

%ORACLE_HOME%=C:\Oracle\instantclient\ #The directory where the above files have been extracted.

Mais informações

  • O diretório atual para setup.py do cx_Oracle é C: \ pydev \ cx_Oracle-5.0.1
  • A versão do Python é 2.6.3
  • O diretório atual para Python é C: \ Python26 - para acesso python 2.6 -> tipo py26 na linha de comando e ele será mapeado para C: \ Python26 \ python
Foi útil?

Solução

Por que você não use um pacote binário como Windows Installer (Oracle 10g, Python 2.6) ?

Consulte http://cx-oracle.sourceforge.net/ para outros pacotes binários


Adenda (tal como solicitado): você deve garantir para utilizar o cx_Oracle que:

  • set ORACLE_HOME se esta variável de ambiente não existe (ver este a Oracle FAQ )
  • python pode encontrar oraocci11.dll para Oracle 11g, oraocci10.dll para Oracle 10g ou oraclient9.dll para Oracle 9i, adicionando a pasta (deve ser% ORACLE_HOME% / bin), onde a DLL está em você variável de ambiente PATH
  • usar o pacote binário correto (ou seja, construída para as versões corretas Python / Oracle)

Outras dicas

Você também precisa de algum tipo de cliente Oracle instalado na sua máquina, já que cx_Oracle é apenas uma ponte entre Python e do Oracle Client. Os clientes da Oracle válidos incluem uma instalação completa do Oracle (como Standard ou XE) ou o instantâneo cliente

A partir da README :

Por favor note que um cliente Oracle (ou servidor) instalação é necessária em Para utilizar cx_Oracle. Se você não exigem as ferramentas que vêm com um instalação do cliente completo, é recomendada para instalar o instantâneo Cliente que é muito mais fácil de instalar.

Eu não tenho instalado no Windows antes, mas você pode ter que definir a variável de ambiente ORACLE_HOME para que cx_Oracle sabe para onde olhar.

Se você usar Anaconda Python x64, as coisas são mais fácil :

conda install -c https://conda.anaconda.org/anaconda cx_oracle

(Ele irá instalar o cliente Oracle direita)


Se você receber o seguinte erro:

[Anaconda2] C:\Users\User>conda install -c https://conda.anaconda.org/anaconda c
x_oracle
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata: ......
Solving package specifications: .................
Package plan for installation in environment C:\Anaconda2:

The following NEW packages will be INSTALLED:

    cx_oracle:            5.1.2-py27_0
    oracle-instantclient: 11.2.0.4.0-0

The following packages will be UPDATED:

    conda:                3.19.1-py27_0 --> 4.0.5-py27_0
    pip:                  8.0.2-py27_0  --> 8.1.1-py27_0
    pyyaml:               3.11-py27_2   --> 3.11-py27_3
    setuptools:           19.6.2-py27_0 --> 20.3-py27_0
    wheel:                0.26.0-py27_1 --> 0.29.0-py27_0

Proceed ([y]/n)? y

Unlinking packages ...
An unexpected error has occurred, please consider sending the            |   0%
following traceback to the conda GitHub issue tracker at:

    https://github.com/conda/conda/issues

Include the output of the command 'conda info' in your report.


Traceback (most recent call last):
  File "C:\Anaconda2\Scripts\conda-script.py", line 4, in <module>
    sys.exit(main())
  File "C:\Anaconda2\lib\site-packages\conda\cli\main.py", line 173, in main
    args_func(args, p)
  File "C:\Anaconda2\lib\site-packages\conda\cli\main.py", line 180, in args_fun
c
    args.func(args, p)
  File "C:\Anaconda2\lib\site-packages\conda\cli\main_install.py", line 45, in e
xecute
    install.install(args, parser, 'install')
  File "C:\Anaconda2\lib\site-packages\conda\cli\install.py", line 423, in insta
ll
    plan.execute_actions(actions, index, verbose=not args.quiet)
  File "C:\Anaconda2\lib\site-packages\conda\plan.py", line 538, in execute_acti
ons
    inst.execute_instructions(plan, index, verbose)
  File "C:\Anaconda2\lib\site-packages\conda\instructions.py", line 148, in exec
ute_instructions
    cmd(state, arg)
  File "C:\Anaconda2\lib\site-packages\conda\instructions.py", line 95, in UNLIN
K_CMD
    install.unlink(state['prefix'], arg)
  File "C:\Anaconda2\lib\site-packages\conda\install.py", line 714, in unlink
    os.unlink(meta_path)
WindowsError: [Error 5] Access is denied: 'C:\\Anaconda2\\conda-meta\\conda-3.19
.1-py27_0.json'

[Anaconda2] C:\Users\User>

Tente executar o prompt de Anaconda como admin:

enter descrição da imagem aqui

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top