2016-04-06 9 views
1

У меня есть две библиотеки lib1 и lib2 и программа, которая их использует, program1. библиотеки имеют setup.py файлы, которые выглядят следующим образом:Как использовать пакеты в локальной файловой системе?

from distutils.core import setup 

setup(name='lib1', 
     version='0.1.0', 
     maintainer='foven', 
     maintainer_email='[email protected]', 
     url='example.com/lib1', 
     packages=[ 
     ] 
    ) 

setup.py для lib2 явно заменяет Lib1 экземпляры с lib2, но в остальном то же самое.

Теперь program1 есть файл requirements.txt, который выглядит следующим образом:

-e ../lib1 
-e ../lib2 

Я хочу использовать две библиотеки из их расположения в файловой системе, так как я не готов поставить их в хранилище. При запуске pip install -r requirements.txt для program1 это работает.

Однако, если изменить Lib1/файл setup.py выглядеть следующим образом:

from distutils.core import setup 

setup(name='lib1', 
     version='0.1.0', 
     maintainer='foven', 
     maintainer_email='[email protected]', 
     url='example.com/lib1', 
     packages=[ 
      'axel' 
     ] 
    ) 

и изменение program1/requirements.txt к этому:

axel == 0.0.4 
-e ../lib1 
-e ../lib2 

работает пункт установить -r requirements.txt from program1 приводит к ошибке:

error: package directory 'axel' does not exist 

Тем не менее, список пипов и задержка замораживания обе указывают на то, что th e пакет установлен.

Мне кажется, что пип не ищет аксель в обычном месте для установленных пакетов или в pypi, но у меня нет большого опыта в этом, поэтому я мог бы быть совершенно неправ. Если создать пустой каталог Lib1/аксель и запустить пункт установить -r requirements.txt для program1, кажется, работает:

Obtaining file:///C:/Users/foven/code/lib1 (from -r requirements.txt (line 2)) 
Obtaining file:///C:/Users/foven/code/lib2 (from -r requirements.txt (line 3)) 
Requirement already satisfied (use --upgrade to upgrade): axel==0.0.4 in c:\program files\python35\lib\site-packages (from -r requirements.txt (line 1)) 
Installing collected packages: lib1, lib2 
    Running setup.py develop for lib1 
    Running setup.py develop for lib2 
Successfully installed lib1-0.1.0 lib2-0.1.0 

Просто чтобы быть ясно, я буду вновь заявить о своей цели: я хочу, чтобы иметь возможность для использования двух библиотек, которые существуют только в локальном файле с программой, над которой я работаю. Что я делаю неправильно и как мне настроить эти библиотеки и программу для работы так, как я хочу?

ответ

1

packages предназначен для перечисления пакетов внутри создаваемого вами пакета. install_requires предназначен для перечисления пакетов, от которых зависит ваш пакет. Вы помещаете зависимость «axel» ​​в packages. Там нет внутреннего пакета под названием «axel», поэтому, конечно, каталог с этим именем не может быть найден.

setup(
    ..., 
    install_requires=['axel'], 
    ... 
)