2016-11-14 7 views
1

Моя установка имеет:Опция «-force-reinstall» заменяет модуль? (Я пытаюсь переустановить cx_Oracle)

- oracle-instantclient (downgraded from 12 to 11) 
- Virtual Environment with Python + Django + cx_Oracle 

Когда я понизил оракула-instantclient, я попытался переустановить cx_Oracle с помощью:

pip install --upgrade --force-reinstall cx_Oracle 

Проблема заключается в том, что cx_Oracle держит жалуясь, что я не использую предыдущую установленную версию 12:

$ python -c "import cx_Oracle" 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
ImportError: libclntsh.so.12.1: cannot open shared object file: No such file or directory 

Так, некоторые вопросы здесь: «--force-переустанавливать» не должен ма ke полная переустановка, включая модуль перекомпиляции (aka cx_Oracle)? У кого-то есть предложение о том, как решить эту проблему? Я посмотрел на pip manual и просто сказал, что он переустанавливает пакет. Не очень полезно.

Update1:

Я пытался следовать решению here, добавив мой cx_Oracle путь к LD_LIBRARY_PATH, но она по-прежнему не работает.

echo $LD_LIBRARY_PATH 
/usr/lib/oracle/11.2/client64/lib:/home/myuser/myuserenv/lib/python3.5/site-packages/cx_Oracle-5.2.1.dist-info 

Обратите внимание, что мой пользователь root имеет другой питон, в то время как мой virtualenv использует свою собственную установку python.

[[email protected]]# which python 
/usr/bin/python 

С моей виртуальной среде:

(myvirtualenv) [[email protected]]$ which python 
~/myvirtualenv/bin/python 

Есть ли какой-нибудь способ установки cx_Oracle вручную с помощью моего корневого пользователя, но положить файлы в виртуальной среде каким-то образом?

Update2:

Я пытался загрузить cx_Oracle и компилировать вручную с помощью следующей команды:

sudo -u myuser ~/myvirtualenv/bin/python setup.py build install 

Но теперь я вижу некоторые ошибки разрешения:

(...) 
error: could not create 'build/bdist.linux-x86_64/egg': Permission denied 

я делаю правильная вещь? Я не хочу испортить эту среду. Благодарю.

+0

Нет, переустановка не поможет. Добавьте путь к cx_Oracle libs в переменную среды 'LD_LIBRARY_PATH'. Http: // StackOverflow.com/questions/11654090/issue-building-cx-oracle-libclntsh-so-11-1-not-found – SergeyLebedev

+0

Hum ... Я пробовал, но не работал ... Я экспортировал свой LD_LIBRARY_PATH, чтобы добавить ... [myvirtualenv] /lib/python3.5/site-packages и /lib/python3.5/site-packages/cx_Oracle-5.2.1.dist-info, но все еще с той же ошибкой ... Некоторое другое предложение? –

+0

Обратите внимание, что я могу использовать sqlplus без каких-либо проблем, так что это проблема только с cx_Oracle ... –

ответ

2

Ответ на ваш вопрос (хотя, кажется, была другая проблема) выглядит следующим образом: Это зависит от структуры модуля. Если скрипт установки вызывает компилятор, то да, да. Потому что, видите ли, модули по умолчанию по умолчанию не включают скомпилированные части, для их предоставления зависит автор модуля.

+0

Hum ... Интересно, я этого не знал. Спасибо Феакуру. –

0

Я мог бы наконец установить. Проблема в том, что мне пришлось использовать python моего virtualenv. Простое решение, но я полностью пропустил.

Шаги:

pip download cx_Oracle 
tar -xvf cx_Oracle-5.2.1.tar.gz 
~/myenv/bin/python setup.py -v build 
sudo ~/myenv/bin/python setup.py install 

Обратите внимание, что я должен был использовать Sudo на последнем шаге. Без этого у меня была эта ошибка разрешения:

error: could not create 'build/bdist.linux-x86_64/egg': Permission denied