2012-02-07 2 views
4

Я просмотрел документацию setup.py и все еще имею некоторые трудности с тем, что, по моему мнению, должен быть довольно простым.setup.py и установка проекта python

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

myproject 
    setup.py 
    src\ 
    main.py 
     extern\ 
     __init__.py 
     mytest.py 

MyProject/setup.py:

#!/usr/bin/env python 
from distutils.core import setup 

setup(name = "myproject", 
     package_dir = {'':"src"}, 
     packages = ["extern"], 
     scripts = ["src/main.py"], 
    ) 

MyProject/SRC/main.py:

#! /usr/bin/env python 
import extern.mytest as mytest 

mytest.print_test() 

MyProject/SRC/ехЬегп/mytest.py:

#!/usr/bin/env python 
def print_test(): 
    print "YAY" 

MyProject/SRC/ехЬегп/_ INIT _.py пустым.

Я бегу setup.py как:

setup.py install --prefix ~/local 

setup.py завершит без ошибок и двигаться main.py в ~/местные/бен однако, когда я запускаю его я получаю следующее сообщение об ошибке :

ImportError: No module named extern.mytest 

Любая идея, что я делаю неправильно? Благодаря!

ответ

7

Проблема заключается в том, что модуль не находится под sys.path, и поэтому его нельзя найти в инструкции import.

В моем случае модуль extern был установлен под номером ~/local/lib/python2.7/site-packages/extern. Однако обратите внимание, что во время установки путь установки был произвольно установлен на ~/local.

Чтобы исправить это, вы можете установить переменную PYTHONPATH в том месте, где установлен модуль, или добавить этот путь к sys.path в main.py.

В качестве альтернативы, вместо:

setup.py install --prefix ~/local 

использование:

setup.py install --user 

Это позволит установить в пользовательском каталоге пакетов сайта (~/.local в моей платформе) и питона будет в состоянии найти пакет без любая проблема. Однако вам, вероятно, потребуется изменить переменную окружения PATH, чтобы включить ~/.local/bin.

+0

Как и в дальнейшем, @jcollado, как насчет установки в каталог 'site-packages' дистрибутива python ... будет ли это заблокировано ошибкой разрешений? – Droogans

+0

Спасибо, я столкнулся с опцией -user после того, как я разместил его, но все равно казалось, что у него есть site.USER_SITE по умолчанию ~/.local. Должен ли я идти о вещах по-другому, чтобы устанавливать вещи локально или это то, что я должен принять? –

+0

./setup.py install --home ~/local , похоже, сработал. –