[Python-de] Entrypoint Spezifikation : String oder Dict und wie beides?
Dr. Volker Jaenisch
volker.jaenisch at inqbus.de
Do Sep 7 18:29:14 EDT 2017
Servus Python Freaks!
Zuerst die schlechte Nachricht. Setup-Tools speichert die Entrypoints in
den Egg-Infos ab. Das ist an sich ja nicht verkehrt. Aber es erzeugt
unnötige Fehler, weil setup-tools offenbar auch die schon erzeugten
entrypoints.txt Dateien parsed.
Erzeuge ein neues VEnv.
$ mkvirtualenv test321
Die setup.py im VEnv
# -*- coding: utf-8 -*-
"""Installer for the inqbus.plone_bokeh package."""
from setuptools import find_packages
from setuptools import setup
long_description = '\n\n'.join([
open('README.rst').read(),
open('CONTRIBUTORS.rst').read(),
open('CHANGES.rst').read(),
])
setup(
name='inqbus.plone_bokeh',
version='1.0a1',
description="Bokeh Integration for Plone",
long_description=long_description,
# Get more from https://pypi.python.org/pypi?%3Aaction=list_classifiers
classifiers=[
"Environment :: Web Environment",
"Framework :: Plone",
"Framework :: Plone :: 5.0",
"Programming Language :: Python",
"Programming Language :: Python :: 2.7",
"Operating System :: OS Independent",
"License :: OSI Approved :: GNU General Public License v2 (GPLv2)",
],
keywords='Python Plone',
author='sandra',
author_email='sandra.rum at inqbus.de',
url='https://pypi.python.org/pypi/inqbus.plone_bokeh',
license='GPL version 2',
packages=find_packages('src', exclude=['ez_setup']),
namespace_packages=['inqbus'],
package_dir={'': 'src'},
include_package_data=True,
zip_safe=False,
install_requires=[
],
extras_require={
'test': [
],
},
entry_points={
'z3c.autoinclude.plugin': ['[z3c.autoinclude.plugin] target =
plone'],
'console_scripts' : ['bokeh_server =
inqbus.bokeh_plone.bokeh.startup:startup_bokeh'],
}
)
Installieren:
python setup.py install
...
File
"/home/volker/workspace/test321/local/lib/python2.7/site-packages/setuptools/command/easy_install.py",
line 725, in process_distribution
self.install_egg_scripts(dist)
File
"/home/volker/workspace/test321/local/lib/python2.7/site-packages/setuptools/command/easy_install.py",
line 601, in install_egg_scripts
self.install_wrapper_scripts(dist)
File
"/home/volker/workspace/test321/local/lib/python2.7/site-packages/setuptools/command/easy_install.py",
line 793, in install_wrapper_scripts
for args in ScriptWriter.best().get_args(dist):
File
"/home/volker/workspace/test321/local/lib/python2.7/site-packages/setuptools/command/easy_install.py",
line 2070, in get_args
for name, ep in dist.get_entry_map(group).items():
File
"/home/volker/workspace/test321/local/lib/python2.7/site-packages/pkg_resources/__init__.py",
line 2639, in get_entry_map
self._get_metadata('entry_points.txt'), self
File
"/home/volker/workspace/test321/local/lib/python2.7/site-packages/pkg_resources/__init__.py",
line 2369, in parse_map
for group, lines in data:
File
"/home/volker/workspace/test321/local/lib/python2.7/site-packages/pkg_resources/__init__.py",
line 2975, in split_sections
raise ValueError("Invalid section heading", line)
ValueError: ('Invalid section heading', '[z3c.autoinclude.plugin] target
= plone')
Geht schief.
Anpassen der setup.py:
...
],
extras_require={
'test': [
],
},
entry_points={
'console_scripts' : ['bokeh_server =
inqbus.bokeh_plone.bokeh.startup:startup_bokeh'],
}
)
Erneutes installieren:
python setup.py install
...
File "/usr/lib/python2.7/distutils/core.py", line 111, in setup
_setup_distribution = dist = klass(attrs)
File
"/home/volker/workspace/test321/local/lib/python2.7/site-packages/setuptools/dist.py",
line 336, in __init__
for ep in pkg_resources.iter_entry_points('distutils.setup_keywords'):
File
"/home/volker/workspace/test321/local/lib/python2.7/site-packages/pkg_resources/__init__.py",
line 726, in iter_entry_points
entries = dist.get_entry_map(group)
File
"/home/volker/workspace/test321/local/lib/python2.7/site-packages/pkg_resources/__init__.py",
line 2639, in get_entry_map
self._get_metadata('entry_points.txt'), self
File
"/home/volker/workspace/test321/local/lib/python2.7/site-packages/pkg_resources/__init__.py",
line 2369, in parse_map
for group, lines in data:
File
"/home/volker/workspace/test321/local/lib/python2.7/site-packages/pkg_resources/__init__.py",
line 2975, in split_sections
raise ValueError("Invalid section heading", line)
ValueError: ('Invalid section heading', '[z3c.autoinclude.plugin] target
= plone')
Suche nach Dateien die z3c.autoinstall beinhalten
(test321) volker at runner:~/workspace/test321/inqbus.plone_bokeh$ grep -R
z3c.auto ../*
../inqbus.plone_bokeh/build/lib.linux-x86_64-2.7/inqbus/plone_bokeh/testing.py:
# The z3c.autoinclude feature is disabled in the Plone fixture base
../inqbus.plone_bokeh/src/inqbus.plone_bokeh.egg-info/entry_points.txt:[z3c.autoinclude.plugin]
../inqbus.plone_bokeh/src/inqbus.plone_bokeh.egg-info/entry_points.txt:[z3c.autoinclude.plugin]
target = plone
../inqbus.plone_bokeh/src/inqbus/plone_bokeh/testing.py: # The
z3c.autoinclude feature is disabled in the Plone fixture base
../inqbus.plone_bokeh/setup.py~: 'z3c.autoinclude.plugin':
['[z3c.autoinclude.plugin] target = plone'],
../lib/python2.7/site-packages/inqbus.plone_bokeh-1.0a1-py2.7.egg/EGG-INFO/entry_points.txt:[z3c.autoinclude.plugin]
../lib/python2.7/site-packages/inqbus.plone_bokeh-1.0a1-py2.7.egg/EGG-INFO/entry_points.txt:[z3c.autoinclude.plugin]
target = plone
../lib/python2.7/site-packages/inqbus.plone_bokeh-1.0a1-py2.7.egg/inqbus/plone_bokeh/testing.py:
# The z3c.autoinclude feature is disabled in the Plone fixture base
../local/lib/python2.7/site-packages/inqbus.plone_bokeh-1.0a1-py2.7.egg/EGG-INFO/entry_points.txt:[z3c.autoinclude.plugin]
../local/lib/python2.7/site-packages/inqbus.plone_bokeh-1.0a1-py2.7.egg/EGG-INFO/entry_points.txt:[z3c.autoinclude.plugin]
target = plone
../local/lib/python2.7/site-packages/inqbus.plone_bokeh-1.0a1-py2.7.egg/inqbus/plone_bokeh/testing.py:
# The z3c.autoinclude feature is disabled in the Plone fixture base
Löschen der Dateien
Erst das Löschen von
../lib/python2.7/site-packages/inqbus.plone_bokeh-1.0a1-py2.7.egg/EGG-INFO/entry_points.txt:
ermöglichte, das die setup.py sauber geparsed wurde.
Das ist IMHO ein Fehler in Setup-Tools. Was in die Egg-Info geschrieben
wurde darf nicht das erneute Ausführen der setup.py behindern.
Beste Grüße
Volker
--
=========================================================
inqbus Scientific Computing Dr. Volker Jaenisch
Richard-Strauss-Straße 1 +49(08861) 690 474 0
86956 Schongau-West http://www.inqbus.de
=========================================================
Mehr Informationen über die Mailingliste python-de