Не сгенерированный скрипт с SetupTools / Distribute в setup.py - PullRequest
0 голосов
/ 21 декабря 2010

Я пытаюсь получить не сгенерированный скрипт, когда запускаю setup.py install для создаваемого пакета Python.

Я прочитал документацию distutils, но не смог найти четких примеров того, как этого добиться.

Mercurial делает это в некоторой части, импортируя install_scripts:

from distutils.command.install_scripts import install_scripts

А затем продолжает заменять некоторые вещи в своем hg сценарии. Этот hg исполняемый файл в конечном итоге используется, переопределяя поведение по умолчанию при использовании чего-то вроде этого:

#!/Users/alfredo/python/foo/bin/python  
# EASY-INSTALL-SCRIPT: 'foo==0.0.1','foo'
__requires__ = 'foo==0.0.1'
import pkg_resources
pkg_resources.run_script('foo==0.0.1', 'foo')

Я пытаюсь не в конечном итоге использовать pkg_resources для импорта моего пакета foo, а в итоге сценарий, который я использую. Я знаю, почему это автоматически генерируется и все еще хочу идти другим путем.

Это копия базового setup.py, который я использую:

import distribute_setup
distribute_setup.use_setuptools()
from setuptools import setup

tests_require = ['pytest']

setup(
name = "foo",
version = "0.0.1",
packages = ['_foo'],

scripts = ['foo'],
zip_safe = False,
package_data = {'': ['distribute_setup.py']},
author = "Alfredo Deza",
author_email = "alfredodeza [at] gmail [dot] com",
description = "",
long_description = """\
Foo
""",
classifiers=[
    'Development Status :: 4 - Beta',
    'Intended Audience :: Developers',
    'License :: OSI Approved :: MIT License',
    'Topic :: Software Development :: Build Tools',
    'Programming Language :: Python :: 2.5',
    'Programming Language :: Python :: 2.6',
    'Programming Language :: Python :: 2.7',
  ],

license = "MIT",
keywords = "",
url = "",   

)

Ответы [ 2 ]

1 голос
/ 24 декабря 2010

После нескольких дней копаний ... оказывается, что Mercurial ничего не делает особый .

Хотя их setup.py делает много вещей, на самом деле ничего не мешает правильно установить скрипт без ссылки на него pkg_resources.

Что такоетогда разница?

Разница в том, что я использую Distribute, и то, как он работает, он переопределяет модуль setup своим собственным (вместо setuptools) и, таким образом, он имеет свое собственное поведение для установки.

В моем случае этот другой способ установки сценариев означает, что сценарий foo будет скопирован в расположение яйца и связан с помощью foo сценария, который импортирует pkg_resources иссылки на эту версию.

Это , а не , что я хочу, и я не смог найти любой Распространить документацию по нему.Тем не менее, очевидно, что они делают это, чтобы обеспечить способ удаления позже.

Так что будьте осторожны!Если вы действительно хотите пойти по моему пути, у вас будут проблемы, если вы захотите удалить материал.

Пока Distribute не предоставит мне возможность настроить то, что копировать в мои скрипты, мне придется переключиться обратнок обычной setuptools

0 голосов
/ 24 декабря 2010

IIRC, используя аргумент --single-version-externally-managed при установке , следует делать все, что угодно.

...