Я упаковываю скрипт в первый раз на python. Он может быть использован как в качестве модуля, и исполняемый файл, так что я узнал, что я мог бы использоватьentry_points не создает пользовательские скрипты с помощью pip, только с easy_install в Python
entry_points = {
'console_scripts': [
'myscript = myscript:main',
],
}
в моем setup.py
автоматически генерировать скрипт в python-x.x.x/bin
каталоге пользователя.
Мой питон скрипт заканчивается
if __name__ == '__main__': main()
где main()
разбирает ввод командной строки.
Я упаковано это с помощью команды:
python setup.py sdist
, а затем протестировали распределение, как:
easy_install dist/myscript-0.3.2.tar.gz
Это ставит myscript
исполняемый файл в моем python-2.7.5/bin
, как и ожидалось.
Но это не делает:
pip install dist/myscript-0.3.2.tar.gz
Любые идеи, почему? Мое дерево каталогов выглядит следующим образом:
Root/
|-- MANIFEST.in
|-- README.rst
|-- dist
| `-- myscript-0.3.2.tar.gz
|-- myscript.egg-info
| |-- ...
|-- myscript.py
|-- setup.cfg
|-- setup.py
`-- test
|-- ...
и мой setup.py
примерно выглядят следующим образом:
import os
from setuptools import setup
def read(*paths):
"""Build a file path from *paths* and return the contents."""
with open(os.path.join(*paths), 'r') as f:
return f.read()
setup(
name='myscript',
version='0.3.2',
description='bla',
long_description=(read('README.rst')),
url='http://url',
license='LGPL',
author='Me',
author_email='[email protected]',
py_modules=['myscript'],
include_package_data=True,
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Natural Language :: English',
'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
'Topic :: Software Development :: Libraries :: Python Modules',
],
install_requires=['Texttable'],
entry_points = {
'console_scripts': [
'myscript = myscript:main',
],
}
)
Спасибо за ваш ответ! Я действительно удалил термин «пакет» из моего вопроса, потому что я просто упаковываю скрипт, а не «пакет» в смысле python (т. Е. Папку с '__init __. Py'). Нет, я уверен, что 'entry_points' настроен правильно, потому что он работает, когда я устанавливаю с помощью' easy_setup'. –