Attempting to install through setup.py raises the following exception:
Traceback (most recent call last): File "setup.py", line 86, in <module> "Topic :: Software Development :: Libraries :: Python Modules", File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 111, in setup _setup_distribution = dist = klass(attrs) File "/Users/nick/workspace/repos/personal/python-daemon/version.py", line 640, in __init__ super(ChangelogAwareDistribution, self).__init__(*args, **kwargs) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/dist.py", line 315, in __init__ self.fetch_build_eggs(attrs['setup_requires']) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/dist.py", line 361, in fetch_build_eggs replace_conflicting=True, File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/pkg_resources/__init__.py", line 850, in resolve dist = best[req.key] = env.best_match(req, ws, installer) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1122, in best_match return self.obtain(req, installer) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1134, in obtain return installer(requirement) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/dist.py", line 427, in fetch_build_egg cmd.ensure_finalized() File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 109, in ensure_finalized self.finalize_options() File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 250, in finalize_options 'dist_version': self.distribution.get_version(), File "/Users/nick/workspace/repos/personal/python-daemon/version.py", line 656, in get_version version_info = self.get_version_info() File "/Users/nick/workspace/repos/personal/python-daemon/version.py", line 651, in get_version_info changelog_path = get_changelog_path(self) File "/Users/nick/workspace/repos/personal/python-daemon/version.py", line 552, in get_changelog_path setup_dirname = os.path.dirname(distribution.script_name) File "/Users/nick/.virtualenvs/p2/bin/../lib/python2.7/posixpath.py", line 122, in dirname i = p.rfind('/') + 1 AttributeError: 'NoneType' object has no attribute 'rfind'
Listing the package as a dependency in another package's setup.py install_requires section causes the following exception:
Traceback (most recent call last): File "setup.py", line 281, in <module> do_setup() File "setup.py", line 275, in do_setup 'extra_clean': CleanCommand, File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 151, in setup dist.run_commands() File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands self.run_command(cmd) File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command cmd_obj.run() File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/command/install.py", line 67, in run self.do_egg_install() File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/command/install.py", line 117, in do_egg_install cmd.run() File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 410, in run self.easy_install(spec, not self.no_deps) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 646, in easy_install return self.install_item(None, spec, tmpdir, deps, True) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 697, in install_item self.process_distribution(spec, dist, deps) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 742, in process_distribution [requirement], self.local_index, self.easy_install File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/pkg_resources/__init__.py", line 850, in resolve dist = best[req.key] = env.best_match(req, ws, installer) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1122, in best_match return self.obtain(req, installer) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1134, in obtain return installer(requirement) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 665, in easy_install return self.install_item(spec, dist.location, tmpdir, deps) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 695, in install_item dists = self.install_eggs(spec, download, tmpdir) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 876, in install_eggs return self.build_and_install(setup_script, setup_base) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 1115, in build_and_install self.run_setup(setup_script, setup_base, args) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 1101, in run_setup run_setup(setup_script, args) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/sandbox.py", line 251, in run_setup raise File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 35, in __exit__ self.gen.throw(type, value, traceback) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/sandbox.py", line 198, in setup_context yield File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 35, in __exit__ self.gen.throw(type, value, traceback) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/sandbox.py", line 169, in save_modules saved_exc.resume() File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/sandbox.py", line 144, in resume six.reraise(type, exc, self._tb) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/sandbox.py", line 157, in save_modules yield saved File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/sandbox.py", line 198, in setup_context yield File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/sandbox.py", line 248, in run_setup DirectorySandbox(setup_dir).run(runner) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/sandbox.py", line 278, in run return func() File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/sandbox.py", line 246, in runner _execfile(setup_script, ns) File "/Users/nick/.virtualenvs/p2/lib/python2.7/site-packages/setuptools/sandbox.py", line 47, in _execfile exec(code, globals, locals) File "/var/folders/mr/gy4bvsm537b70tj1fvl869y80000gn/T/easy_install-4ffUuA/python-daemon-2.1.2/setup.py", line 43, in <module> sys.exit(errno) AttributeError: 'module' object has no attribute 'ChangelogAwareDistribution'
On 23-Nov-2016, Nick Allen wrote:
Thanks for the report. What specific command did you invoke? What version of Python, what version of =E2=80=98python-daemon=E2=80=99?
Traceback (most recent call last): [=E2=80=A6] File "/Users/nick/workspace/repos/personal/python-daemon/version.py", l= ine 552, in get_changelog_path setup_dirname =3D os.path.dirname(distribution.script_name) File "/Users/nick/.virtualenvs/p2/bin/../lib/python2.7/posixpath.py", l= ine 122, in dirname i =3D p.rfind('/') + 1 AttributeError: 'NoneType' object has no attribute 'rfind'
This implies that the Distribution object does not have its =E2=80=98script_name=E2=80=99 assigned. That will happen in the =E2=80=98se= tup=E2=80=99 function call, so I don't see how it could be None here.
Listing the package as a dependency in another package's setup.py install= _requires section causes the following exception:
I will need more detail before this description is useable to reproduce the behaviour :-)
```Traceback (most recent call last): File "setup.py", line 281, in do_setup() File "setup.py", line 275, in do_setup 'extra_clean': CleanCommand, [=E2=80=A6] File "/var/folders/mr/gy4bvsm537b70tj1fvl869y80000gn/T/easy_install-4ff= UuA/python-daemon-2.1.2/setup.py", line 43, in sys.exit(errno)
None of this seems to be the actual =E2=80=98setup.py=E2=80=99 module distr= ibuted with =E2=80=98python-daemon=E2=80=99 version 2.1.2, so I don't know what code th= at is.
--=20 \ =E2=80=9CI got an answering machine for my phone. Now when some= one | `\ calls me up and I'm not home, they get a recording of a busy | _o__) signal.=E2=80=9D =E2=80=94St= even Wright | Ben Finney ben@benfinney.id.au
Initially found the issue attempting to run python setup.py install on the Apache airflow package. Then tried running the same command in python daemon directly with the same problem.
python setup.py install
Pip install seems to work without a problem.
From fresh Python 3.5 virtualenv and checking out release/2.1.2 tag:
release/2.1.2
$ python setup.py install p3 9:49:37 Traceback (most recent call last): File "/home/nick/.virtualenvs/p3/lib/python3.5/site-packages/setuptools/dist.py", line 402, in fetch_build_egg cmd = self._egg_fetcher AttributeError: 'ChangelogAwareDistribution' object has no attribute '_egg_fetcher' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "setup.py", line 86, in <module> "Topic :: Software Development :: Libraries :: Python Modules", File "/usr/lib/python3.5/distutils/core.py", line 108, in setup _setup_distribution = dist = klass(attrs) File "/home/nick/workspace/repos/swimlane/python-daemon/version.py", line 640, in __init__ super(ChangelogAwareDistribution, self).__init__(*args, **kwargs) File "/home/nick/.virtualenvs/p3/lib/python3.5/site-packages/setuptools/dist.py", line 315, in __init__ self.fetch_build_eggs(attrs['setup_requires']) File "/home/nick/.virtualenvs/p3/lib/python3.5/site-packages/setuptools/dist.py", line 361, in fetch_build_eggs replace_conflicting=True, File "/home/nick/.virtualenvs/p3/lib/python3.5/site-packages/pkg_resources/__init__.py", line 850, in resolve dist = best[req.key] = env.best_match(req, ws, installer) File "/home/nick/.virtualenvs/p3/lib/python3.5/site-packages/pkg_resources/__init__.py", line 1122, in best_match return self.obtain(req, installer) File "/home/nick/.virtualenvs/p3/lib/python3.5/site-packages/pkg_resources/__init__.py", line 1134, in obtain return installer(requirement) File "/home/nick/.virtualenvs/p3/lib/python3.5/site-packages/setuptools/dist.py", line 427, in fetch_build_egg cmd.ensure_finalized() File "/usr/lib/python3.5/distutils/cmd.py", line 107, in ensure_finalized self.finalize_options() File "/home/nick/.virtualenvs/p3/lib/python3.5/site-packages/setuptools/command/easy_install.py", line 250, in finalize_options 'dist_version': self.distribution.get_version(), File "/home/nick/workspace/repos/swimlane/python-daemon/version.py", line 656, in get_version version_info = self.get_version_info() File "/home/nick/workspace/repos/swimlane/python-daemon/version.py", line 651, in get_version_info changelog_path = get_changelog_path(self) File "/home/nick/workspace/repos/swimlane/python-daemon/version.py", line 552, in get_changelog_path setup_dirname = os.path.dirname(distribution.script_name) File "/home/nick/.virtualenvs/p3/lib/python3.5/posixpath.py", line 148, in dirname i = p.rfind(sep) + 1 AttributeError: 'NoneType' object has no attribute 'rfind'
Python 2.7 release/2.1.2:
$ python setup.py install p2 9:52:04 Traceback (most recent call last): File "setup.py", line 86, in <module> "Topic :: Software Development :: Libraries :: Python Modules", File "/usr/lib/python2.7/distutils/core.py", line 111, in setup _setup_distribution = dist = klass(attrs) File "/home/nick/workspace/repos/swimlane/python-daemon/version.py", line 640, in __init__ super(ChangelogAwareDistribution, self).__init__(*args, **kwargs) File "/home/nick/.virtualenvs/p2/local/lib/python2.7/site-packages/setuptools/dist.py", line 315, in __init__ self.fetch_build_eggs(attrs['setup_requires']) File "/home/nick/.virtualenvs/p2/local/lib/python2.7/site-packages/setuptools/dist.py", line 361, in fetch_build_eggs replace_conflicting=True, File "/home/nick/.virtualenvs/p2/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 850, in resolve dist = best[req.key] = env.best_match(req, ws, installer) File "/home/nick/.virtualenvs/p2/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1122, in best_match return self.obtain(req, installer) File "/home/nick/.virtualenvs/p2/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1134, in obtain return installer(requirement) File "/home/nick/.virtualenvs/p2/local/lib/python2.7/site-packages/setuptools/dist.py", line 427, in fetch_build_egg cmd.ensure_finalized() File "/usr/lib/python2.7/distutils/cmd.py", line 109, in ensure_finalized self.finalize_options() File "/home/nick/.virtualenvs/p2/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 250, in finalize_options 'dist_version': self.distribution.get_version(), File "/home/nick/workspace/repos/swimlane/python-daemon/version.py", line 656, in get_version version_info = self.get_version_info() File "/home/nick/workspace/repos/swimlane/python-daemon/version.py", line 651, in get_version_info changelog_path = get_changelog_path(self) File "/home/nick/workspace/repos/swimlane/python-daemon/version.py", line 552, in get_changelog_path setup_dirname = os.path.dirname(distribution.script_name) File "/home/nick/.virtualenvs/p2/lib/python2.7/posixpath.py", line 122, in dirname i = p.rfind('/') + 1 AttributeError: 'NoneType' object has no attribute 'rfind'
I do have the same issue. Is there any known workaround ?
From fresh Python 3.5 virtualenv and checking out release/2.1.2 tag […]
Before development can proceed, you need to have the correct distributions installed. But Setuptools is preventing you from doing that easily.
The dependencies are declared in the Setuptools configuration:
setup_requires declares dependencies for any Setuptools actions.
setup_requires
tests_require declares dependencies for running the test suite.
tests_require
install_requires declares dependencies for installing the distribution.
install_requires
etc.
So the bug is ; Setuptools behaves incorrectly when setup_requires specifies a distribution that is also a dependency in install_requires.
You can work around this Setuptools bug, by manually installing the dependent distributions, in order to work on the code.
Thanks for the detailed answer @bignose. Concretely, here the issue is with the docutils dependency ? cf. https://pagure.io/python-daemon/blob/master/f/setup.py#_54
I can confirm that the following command reproduces the bug:
pip install https://pypi.python.org/packages/b2/fb/a280d65f81e9d69989c8d6c4e0bb18d7280cdcd6d406a2cc3f4eb47d4402/python-daemon-2.1.2.tar.gz
While this this works pefectly well:
pip install docutils pip install https://pypi.python.org/packages/b2/fb/a280d65f81e9d69989c8d6c4e0bb18d7280cdcd6d406a2cc3f4eb47d4402/python-daemon-2.1.2.tar.gz
Thanks for the help ;)
I guess this issue is fixed by #23 (https://pagure.io/python-daemon/pull-request/23)
With a PEP 518 conformant build system specification, I think this issue is now resolved:
$ python3 -m pip install https://files.pythonhosted.org/packages/8b/50/254c0b5b99c24fc79e41fd08269ad62549322a7356a52830f5f95b873c36/python-daemon-2.2.2.tar.gz […] Successfully built python-daemon Installing collected packages: lockfile, python-daemon Successfully installed lockfile-0.12.2 python-daemon-2.2.2
Metadata Update from @bignose: - Issue close_status updated to: Fixed - Issue status updated to: Closed (was: Open)