Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Installing python setup.py into an alternative path doesn't find installed package

I have a test setup file, which I made for a simple "hello world" script. I have a package named mytest which has a function hello. Now, I have a very simple setup.py. Everything works fine, if I just run python setup.py install. But if I want to install lib into home folder (python setup.py install --home=/home/blah), the package is not available anymore (running import mytest in python gives me ImportError: No module named mytest).

Should I add pth-file manually into site-packages folder? I tried it (with contents /home/blah/lib/python, where my package is put) and importing mytest worked fine. Shouldn't it be done automatically? Or have I missed something?

EDIT:

output of install:

ago@dellbert:~/py/mytest-0.1$ python setup.py install --home=/home/ago/py/
running install
running build
running build_py
copying src/mytest/mytest.py -> build/lib.linux-x86_64-2.6/mytest
running build_scripts
copying and adjusting src/main.py -> build/scripts-2.6
running install_lib
copying build/lib.linux-x86_64-2.6/mytest/mytest.py -> /home/ago/py//lib/python/mytest
byte-compiling /home/ago/py//lib/python/mytest/mytest.py to mytest.pyc
running install_scripts
copying build/scripts-2.6/main.py -> /home/ago/py//bin
changing mode of /home/ago/py//bin/main.py to 755
running install_egg_info
Removing /home/ago/py//lib/python/mytest-0.1.egg-info
Writing /home/ago/py//lib/python/mytest-0.1.egg-info

and setup.py:

from distutils.core import setup

setup(name='mytest',
      description='test',
      author='Ago',
      author_email='email',
      version='0.1',
      package_dir={'mytest': 'src/mytest'},
      packages=['mytest'],
      scripts=['src/main.py']
      )

Folder structure:

-src:
   -mytest:
       __init__.py
       mytest.py
    main.py
setup.py

main.py is just an executable which imports mytest and calls function to print hello world. But I have tried to just run import mytest in python to see, whether lib is installed.

like image 496
Ago Avatar asked Dec 10 '10 03:12

Ago


1 Answers

It seems python unified at least the parameters in Unix- and Windows environments. Looking at the python reference today (https://docs.python.org/2/install/index.html, Dec. 2017), it shows that in both OS you can use the --prefix=<head installation path>. Have a look on the reference, section "Alternate installation: Unix (the prefix scheme)" and "Alternate installation: Windows (the prefix scheme)". I just tested it with Oct2Py (Octave-to-Python converter), which was a trouble to install with easy_install or pip, but did the job this way quite well.

Your python package will be then in (assuming you use Python 2.7) <head installation path>/lib/python2.7/site-packages or <head installation path>/lib/python2.7/dist-packages.

like image 87
CKBergen Avatar answered Sep 19 '22 15:09

CKBergen