2014-07-03 18 views
20

Potrzebuję zainstalować cx_Oracle dla Pythona 2.5 na Linuksie (Linux 2.6.18-371.1.2.el5 i686). Zainstalowałem klienta Oracle 10.2.0.4.cx_Oracle: distutils.errors.DistutilsSetupError: nie można zlokalizować plików zawierających Oracle

Próbowałem już następujące: 1. Pobierz cx_Oracle tar.gz z http://sourceforge.net/projects/cx-oracle/files/. Nie wiem, która z wymienionych wersji jest odpowiednia dla Pythona 2.5 i Oracle 10.2.0.4, więc spróbuj cx_Oracle-5.1.tar.gz. Unpacked tar, przejdź do rozpakowanego folderu i uruchom python setup.py install. Mam błąd:

Traceback (most recent call last): 
File "setup.py", line 187, in <module> 
raise DistutilsSetupError("cannot locate Oracle include files") 
distutils.errors.DistutilsSetupError: cannot locate Oracle include files 

W bash_profile Mam setted ścieżkę Wyrocznia:

export ORACLE_HOME=/usr/oracle/10.2.0.4/client 
export PATH=$ORACLE_HOME/bin 
export LD_LIBRARY_PATH=$ORACLE_HOME/lib 

Jak rozwiązać taki problem, może muszę kolejną wersję cx_Oracle smoły?

  1. Uruchom instalację pip cx_Oracle. Dostaje błąd:

Pobieranie/rozpakowywania cx-Oracle

Cannot fetch index base URL https://pypi.python.org/simple/ 
Could not find any downloads that satisfy the requirement cx-Oracle 
No distributions at all found for cx-Oracle 

Może ktoś mi doradzić właściwe rozwiązanie?

Aktualizacja Po sugestii w odpowiedzi mam następujący błąd:

... 
cx_Oracle.c:496: warning: passing argument 3 of âPyModule_AddIntConstantâ makes integer from pointer without a cast 
cx_Oracle.c:497: error: âOCI_UCBTYPE_EXITâ undeclared (first use in this function) 
cx_Oracle.c:497: warning: passing argument 3 of âPyModule_AddIntConstantâ makes integer from pointer without a cast 
cx_Oracle.c:498: error: âOCI_UCBTYPE_REPLACEâ undeclared (first use in this function) 
cx_Oracle.c:498: warning: passing argument 3 of âPyModule_AddIntConstantâ makes integer from pointer without a cast 
error: command 'gcc' failed with exit status 1 

Odpowiedz

13

Po uruchomieniu setup.py będzie sprawdzić każdy z tych folderów na swoim ORACLE_HOME.

possibleIncludeDirs = ["rdbms/demo", "rdbms/public", "network/public", 
     "sdk/include"] 

Również natychmiastowy klient czasami umieszcza zawierać pliki, takie jak oci.h w/usr/include/oracle // klienta, jeśli nie ma „to” katalog pod ORACLE_HOME utworzyć dowiązanie symboliczne do niego .

sudo ln -s /usr/include/oracle/11.2/client $ORACLE_HOME/include 

Wygląda jakbyś brakuje Client SDK

+1

Próbowałem utworzyć link symboliczny, to nie pomaga, ale spróbuj dodać pusty folder do /usr/oracle/10.2.0.4/client/net praca. Ten poprawiony błąd, ale dostałem nowy, proszę zobaczyć w zaktualizowanym pytaniu dla szczegółów – khris

+0

@khris Spróbuj pobrać sdk i wyodrębnianie na swoim kliencie, powinien utworzyć folder sdk/include. Dodałem link do odpowiedzi. –

+0

Czy możesz prosić o bezpośredni link na stronie SDK klienta Widzę wiele rzeczy, takich jak pakiet SDK do zarządzania treścią i nie wiem, co dokładnie muszę pobrać. Dzięki – khris

0

Upewnij się, że masz SDK klienta obecny na swojej drodze.

Również musiałem zrobić to dodać do mojego .bash_rc

export DYLD_LIBRARY_PATH=$ORACLE_HOME 

Poza tym, Python 2.7 nie pochodzi z Python.h który jest dostępny domyślnie w Pythonie 3.4. Dlatego też sugeruję zainstalowanie pakietu Python-devel

yum install python-devel 

To powinno rozwiązać problem.

1
  1. Install oracle_client_basic

    oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 
    
  2. Korzystanie pip zainstalować

    python -m pip install cx_Oracle 
    
  3. Dodawanie ldconfig

    1. Znajdź swoją lokalizację klienta, na przykład: /u01/app/oracle/product/11.2.0/client_1/lib
    2. vi /etc/ld.so.conf.d/oracle.conf

      Dodaj tę lokalizację do niego:

      /u01/app/oracle/product/11.2.0/client_1/lib 
      
    3. ldconfig
  4. import cx_oracle
Powiązane problemy