Ajuda cx_Oracle instalação
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
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 ouoraclient9.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: