#python #virtualenv #openshift
#python #virtualenv #openshift
Вопрос:
Я обновлял свой проект после долгого бездействия, и что-то сломалось. Сбой развертывания, и приложение не было перезапущено после git push
.
Я все еще могу запустить свое приложение вручную, запустив gear start
, но шаги развертывания, необходимые для установки пакетов install_requires
, завершаются неудачей.
Вот части gear deploy
вывода:
Activating virtenv
Running setup.py script..
running develop
error: can't create or remove files in install directory
The following error occurred while trying to add or remove files in the
installation directory:
[Errno 13] Permission denied: '/usr/lib/python2.6/site-packages/test-easy-install-358943.write-test'
The installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:
/usr/lib/python2.6/site-packages/
Perhaps your account does not have write access to this directory? If the
installation directory is a system-owned directory, you may need to sign in
as the administrator or "root" account. If you do not have administrative
access to this machine, you may wish to choose a different installation
directory, preferably one that is listed in your PYTHONPATH environment
variable.
For information on other options, you may wish to consult the
documentation at:
http://peak.telecommunity.com/EasyInstall.html
Please make the appropriate changes for your system and try again.
И, позже:
Running collectstatic...
Traceback (most recent call last):
File "~/app-root/runtime/repo//wsgi/music/manage.py", line 2, in <module>
from django.core.management import execute_manager
ImportError: No module named django.core.management
Я попытался включить venv и запустить setup.py вручную:
source $OPENSHIFT_GEAR_DIR/virtenv/bin/activate
export PYTHON_EGG_CACHE=$OPENSHIFT_GEAR_DIR/virtenv/lib/python-2.6
~/app-root/repo/setup.py develop
Однако это привело к той же can't create or remove files in install directory
ошибке. И я не могу работать manage.py
в этой среде, как и раньше.
Мне кажется, что что-то случилось с venv, но, значит, gear start
он тоже использует его, и он все еще работает…
Кто-нибудь может рассказать мне об этой проблеме?
PS Я использую картридж Python 2.6
Комментарии:
1. для записи вам нужны
sudo
разрешения или разрешения на запись/usr/lib/
2. Это вопрос, специфичный для OpenShift. OpenShift — это PaaS RedHat. Я не думаю, что они предоставят мне привилегированный доступ 😉
3. ну, вы не можете записывать в каталог без sudo, попробуйте указать каталог, в котором у вас есть права на запись.
4. @PadraicCunningham Да, укажите каталог, доступный для записи. В OpenShift все запускается через его сценарии управления, которые делают это автоматически, и я спрашиваю, как их восстановить или как они на самом деле работают.
5. Насколько я вижу,
~/python/virtualenv/bin/python
интерпретатор не устанавливает пути virtualenv, в то время как выполнение~/python/virtualenv/bin/activate_this.py
в общесистемном интерпретаторе python делает. Вот почему shellscripts, которые полагаются наsource activate
сбой, в то время как интерфейс wsgi, полагающийся наactivate_this.py
работу.
Ответ №1:
По крайней мере, у меня это работает. Произошел беспорядок с символическими ссылками, virtenv/lib64
-> ../../python-2.6/virtenv/lib
был доступен только из ~/python-2.6
, что является символической ссылкой на ~/python
, которая содержит virtenv
, на которую фактически ссылаются переменные среды, на которые указывает другая символическая ссылка ~/app-root/runtime/dependencies/python/virtenv
. В результате интерпретатор virtenv python не смог найти библиотеки и другие материалы virtenv/lib64
и вернулся к /usr
prefix.
Я просто указал lib64
-> lib
и развертывание теперь работает.
Однако весь этот беспорядок каким-то образом был создан набором инструментов OpenShift, и я не уверен, что он не сломается снова.