Skip to content

Commit

Permalink
fix(build,gak#119,gak#155): use setuptools-entry-points instead of co…
Browse files Browse the repository at this point in the history
…nsole-script...

to fix launching on Windows.
Also this is now the officially "blessed" way to generated executables:
  https://packaging.python.org/guides/distributing-packages-using-setuptools/#scripts
  • Loading branch information
ankostis committed Jun 8, 2018
1 parent 13daf83 commit e582642
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 1 deletion.
31 changes: 31 additions & 0 deletions pycallgraph/__main__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env python
"""
pycallgraph
This script is the command line interface to the pycallgraph Python library.
See http://pycallgraph.slowchop.com/ for more information.
"""
import sys
import os

def main():
import pycallgraph

config = pycallgraph.Config()
config.parse_args()
config.strip_argv()

globals()['__file__'] = config.command

file_content = open(config.command).read()

with pycallgraph.PyCallGraph(config=config):
exec(file_content)


if __name__ == '__main__':
## Pep366 must always be the 1st thing to run.
if not globals().get('__package__'):
__package__ = "polyversion" # noqa: A001 F841 @ReservedAssignment

main()
8 changes: 8 additions & 0 deletions scripts/pycallgraph
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@ pycallgraph
This script is the command line interface to the pycallgraph Python library.
See http://pycallgraph.slowchop.com/ for more information.
.. deprecated:: > 1.0.1
Code here moved to :func:`pycallgraph.__main__.main()`
and now using setuptools console-script entry-points,
to properly install on Windows.
- See https://github.com/gak/pycallgraph/issues/119
- See https://github.com/gak/pycallgraph/issues/155
"""
import sys
import os
Expand Down
5 changes: 4 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

from setuptools.command.test import test as TestCommand

## FIXME: importing my-package may fail if dependent projects
# from :mod:`./pycallgraph/__init__.py` are not installed yet at this stage!
import pycallgraph

# Only install the man page if the correct directory exists
Expand Down Expand Up @@ -40,7 +42,8 @@ def run_tests(self):
license=open('LICENSE').read(),
url=pycallgraph.__url__,
packages=['pycallgraph', 'pycallgraph.output'],
scripts=['scripts/pycallgraph'],
entry_points={
'console_scripts': ['pycallgraph = pycallgraph.__main__:main']},
data_files=data_files,
use_2to3=True,

Expand Down

0 comments on commit e582642

Please sign in to comment.