Несколько проектов, использующих несколько скриптов setup.py? - PullRequest
9 голосов
/ 17 января 2012

У меня есть проект, из которого я хотел бы создать два отдельных пакета Python.Я хочу установить эти пакеты, используя pip.

В ответах на этот предыдущий вопрос общей рекомендацией было написать два setup.py скрипта: Несколько проектов из одного setup.py?

Итак, я попробовал такую ​​структуру:

/myproject
   setup_foo.py
   setup_bar.py
   /mypackage1
   /mypackage2
   ...

В setup_foo.py я установил параметр script_name:

from distutils.core import setup
setup(name = 'foo',
      version = '2.0.0',
      ...,
      script_name = 'setup_foo.py')

(я также попробовал приведенное ниже безпараметр - в соответствии с документацией по умолчанию используется sys.argv [0])

Я создаю foo-2.0.0.tar.gz, используя

python setup_foo.py sdist

Но когда я pip install foo-2.0.0.tar.gz, я получаю ошибку, подобную этой:

Unpacking .../foo-2.0.0.tar.gz
Running setup.py egg_info for package from file:///...foo-2.0.0.tar.gz
Traceback (most recent call last):
  File "<string>", line 14, in <module>
IOError: [Errno 2] No such file or directory: '/var/folders/wj/jv7n2pmn5d1g1jjx6khc8bx80000gn/T/pip-v3dujq-build/setup.py'
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 14, in <module>
IOError: [Errno 2] No such file or directory:
'/var/folders/wj/jv7n2pmn5d1g1jjx6khc8bx80000gn/T/pip-v3dujq-build/setup.py'

Не хватает ли какого-либо способа указания pip на использование setup_foo.py?Или я должен поместить два скрипта, оба с именем 'setup.py', в отдельные каталоги?

Ответы [ 2 ]

7 голосов
/ 17 января 2012

Вопрос в том, почему вы помещаете эти проекты в один каталог.Моя рекомендация - правильно разделить их, а затем добавить их в общий virtualenv через "setup.py development -U".Все, что было сделано, работает прекрасно.

В противном случае вашей следующей проблемой будет совместное использование "setup.cfg", "MANIFEST.in" и т. Д. В общем, у вас будет много ненужной боли,каждый раз, когда вы нарушаете предположения setuptools / distribate.

I предположим, , что вы выбрали вышеупомянутую структуру, так что оба пакета автоматически попадают в путь python, "velop -U "делает это явным, ицитата «импортировать это»:

Явное лучше, чем неявное.

0 голосов
/ 18 января 2012

Похоже, что setuptools не поддерживает сценарии установки, которые не называются setup.py, в отличие от distutils. Я думаю, что было бы лучше сообщить об ошибке в setuptools (bugs.python.org/setuptools) и распространить (на bitbucket) разработчикам.

...