Search code examples
gitgithubpipopenshiftpaas

Can't install Python module from GitHub at OpenShift


Trying to deploy a Python application into OpenShift, BTW is my first OpenShift deployment. Everything works fine, but the installation of a module which is hosted at GitHub. I've been trying it many ways around. Can anyone help me please? Many thanks in advance. It seems like OpenShift Git version(1.7.1) is no compatible with what I'm trying to achieve. This is the error output:

    Obtaining django-filter from git+https://github.com/jpardobl/django-filter.git@8a3d092a99feaacea6b85c5ae5a987dc9ea970ab#egg=django_filter-dev (from -r /var/lib/openshift/515ebbc650044643fa00000d/app-root/repo/requirements.txt (line 1))
remote:   Found command 'git' at '/usr/bin/git'
remote: Command /usr/bin/git config remote.origin.url failed with error code 1
remote: Exception information:
remote: Traceback (most recent call last):
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/basecommand.py", line 126, in main
remote:     self.run(options, args)
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/commands/install.py", line 223, in run
remote:     requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/req.py", line 936, in prepare_files
remote:     req_to_install.update_editable(not self.is_download)
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/req.py", line 384, in update_editable
remote:     vcs_backend.obtain(self.source_dir)
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/vcs/git.py", line 104, in obtain
remote:     if self.check_destination(dest, url, rev_options, rev_display):
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/vcs/__init__.py", line 183, in check_destination
remote:     existing_url = self.get_url(dest)
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/vcs/git.py", line 116, in get_url
remote:     show_stdout=False, cwd=location)
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/__init__.py", line 255, in call_subprocess
remote:     % (command_desc, proc.returncode))
remote: InstallationError: Command /usr/bin/git config remote.origin.url failed with error code 1
remote: 
remote: Storing complete log in /var/lib/openshift/515ebbc650044643fa00000d/.pip/pip.log
remote: Traceback (most recent call last):
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/bin/pip", line 9, in <module>
remote:     load_entry_point('pip==1.0.2', 'console_scripts', 'pip')()
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/__init__.py", line 116, in main
remote:     return command.main(initial_args, args[1:], options)
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/basecommand.py", line 151, in main
remote:     log_fp = open_logfile(log_fn, 'w')
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/basecommand.py", line 177, in open_logfile
remote:     os.makedirs(dirname)
remote:   File "/usr/lib64/python2.6/os.py", line 157, in makedirs
remote:     mkdir(name, mode)
remote: OSError: [Errno 13] Permission denied: '/var/lib/openshift/515ebbc650044643fa00000d/.pip'
remote: Running .openshift/action_hooks/build
remote: Obtaining django-filter from git+https://github.com/jpardobl/django-filter.git@8a3d092a99feaacea6b85c5ae5a987dc9ea970ab#egg=django_filter-dev (from -r /var/lib/openshift/515ebbc650044643fa00000d/app-root/repo/requirements.txt (line 1))
remote:   Found command 'git' at '/usr/bin/git'
remote: Command /usr/bin/git config remote.origin.url failed with error code 1
remote: Exception information:
remote: Traceback (most recent call last):
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/basecommand.py", line 126, in main
remote:     self.run(options, args)
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/commands/install.py", line 223, in run
remote:     requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/req.py", line 936, in prepare_files
remote:     req_to_install.update_editable(not self.is_download)
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/req.py", line 384, in update_editable
remote:     vcs_backend.obtain(self.source_dir)
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/vcs/git.py", line 104, in obtain
remote:     if self.check_destination(dest, url, rev_options, rev_display):
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/vcs/__init__.py", line 183, in check_destination
remote:     existing_url = self.get_url(dest)
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/vcs/git.py", line 116, in get_url
remote:     show_stdout=False, cwd=location)
remote:   File "/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg/pip/__init__.py", line 255, in call_subprocess
remote:     % (command_desc, proc.returncode))
remote: InstallationError: Command /usr/bin/git config remote.origin.url failed with error code 1

Following, my setup.py file

 from setuptools import setup

    setup(name='nautivel', 
version='0.8.1', 
description='OpenShift App', 
author='Javier Pardo Blasco', 
author_email='xxxxxxx', 
url='http://jpardobl.com', 
install_requires=( 
'Django == 1.5', 
'argparse == 1.2.1', 
'distribute == 0.6.24', 
'moment == 0.0.15', ), )

Also my requirements.txt file

-e git+https://github.com/jpardobl/django-filter.git@8a3d092a99feaacea6b85c5ae5a987dc9ea970ab#egg=django_filter-dev

And finally the .openshift/action_hooks/build file(it is not using env variables to reduce error risks while trying)

    !/bin/bash
    source /var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/bin/activate 
/var/lib/openshift/515ebbc650044643fa00000d/python-2.6/virtenv/bin/pip install -v -r /var/lib/openshift/515ebbc650044643fa00000d/app-root/repo/requirements.txt

Solution

  • Instead of using setup.py to install I use a workaround. I install the modules from the build action hook as follows.

    # .openshift/action_hooks/build
    
    
    #!/bin/bash
    MESSAGES_PATH=$HOME/python-2.6/virtenv/lib/python2.6/site-packages/django-messages-patch-src
    git clone git://github.com/jpardobl/django-messages-patched.git $MESSAGES_PATH
    ln -s $MESSAGES_PATH/django_messages $HOME/python-2.6/virtenv/lib/python2.6/site-packages/messages
    

    That's it!!!