Установка python setup.py в альтернативный путь не находит установленный пакет - PullRequest
4 голосов
/ 10 декабря 2010

У меня есть тестовый установочный файл, который я сделал для простого скрипта "hello world". У меня есть пакет с именем mytest, который имеет функцию hello. Теперь у меня есть очень простой setup.py. Все отлично работает, если я просто запускаю python setup.py install. Но если я хочу установить lib в домашнюю папку (python setup.py install --home=/home/blah), пакет больше не доступен (запуск import mytest в python дает мне ImportError: No module named mytest).

Должен ли я вручную добавить pth-файл в папку site-packages? Я попробовал (с содержимым /home/blah/lib/python, где находится мой пакет), и импорт mytest работал нормально. Разве это не должно быть сделано автоматически? Или я что-то пропустил?

EDIT:

вывод установки:

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

и 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']
      )

Структура папок:

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

main.py - это просто исполняемый файл, который импортирует mytest и вызывает функцию print hello world. Но я попытался просто запустить import mytest в python, чтобы увидеть, установлена ​​ли lib.

Ответы [ 2 ]

3 голосов
/ 10 декабря 2010

Мне было бы интересно увидеть полный вывод команды python setup.py install --home=/home/blah. Если каталог не существует или не поддерживает pth-файлы, вы должны получить какое-то предупреждение или ошибку, и я считаю, что установка действительно не удастся.

Это также помогло бы увидеть файл setup.py, потому что там можно поместить вещи, которые могут привести к поломке.

0 голосов
/ 20 декабря 2017

Кажется, Python унифицирует по крайней мере параметры в средах Unix и Windows. Глядя на сегодняшнюю ссылку на Python (https://docs.python.org/2/install/index.html, декабрь 2017), видно, что в обеих ОС вы можете использовать --prefix=<head installation path>. Взгляните на ссылку, раздел "Альтернативная установка: Unix (схема префикса)" и "Альтернативная установка: Windows (схема префикса)" . Я только что протестировал его с Oct2Py (конвертер Octave-в-Python), который было трудно установить с помощью easy_install или pip, но справился с этим довольно хорошо.

Ваш пакет Python будет тогда (при условии, что вы используете Python 2.7) <head installation path>/lib/python2.7/site-packages или <head installation path>/lib/python2.7/dist-packages.

...