danmacnish / cartoonify

python app to turn a photograph into a cartoon

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ImportError: cannot import name run

JBaczuk opened this issue · comments

Installed on mac using $ pip install --user and trying to run with $ cartoonify, getting this error: ImportError: cannot import name run. Installed module run using $ pip install run --user

I'm getting the same error here too

This also fails on Ubuntu:

Traceback (most recent call last):
  File "/home/parallels/.local/bin/cartoonify", line 9, in <module>
    load_entry_point('cartoonify==0.1.0', 'console_scripts', 'cartoonify')()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 542, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2569, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2229, in load
    return self.resolve()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2239, in resolve
    raise ImportError(str(exc))
ImportError: 'module' object has no attribute 'run'

Ubuntu 18.04:

Traceback (most recent call last):
  File "/home/v/.local/bin/cartoonify", line 11, in <module>
    load_entry_point('cartoonify==0.1.0', 'console_scripts', 'cartoonify')()
  File "/home/v/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 476, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/home/v/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2700, in load_entry_point
    return ep.load()
  File "/home/v/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2318, in load
    return self.resolve()
  File "/home/v/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2324, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
ImportError: No module named run

I get around this issue by running cartoonify directly from the source cartoonify/ directory with python2.7 run.py.

For compatibility with Python 2.7 I also had to change line 127 of workflow.py from:

        with open(str(scores_path), 'w', newline='') as f:

to:

        with open(str(scores_path), 'w') as f:

Thirdly, the Path input for specifying input images did not work for me on osx. I changed line 76 in run.py from:

            path = Path(input("enter the path to the directory to process:"))

to:

            path = Path.cwd() / 'images'

With this modification, I place any number of input images in the images/ folder, and launch cartoonify with python2.7 run.py --batch-process.

It seems to actually be written for Python 3 (as evidenced by the use of input() instead of raw-input(), the newline parameter to open(), etc.), contrary to the documentation which says Python 2.7.

The README.md instructions now reflect some of what I wrote in my previous comment (latest commit 084146e).

@anders-dc your suggestions are spot on - I've since done a clean clone of the repo on my machine, and updated the readme and desktop reqs.

As I'm sure a few people have noticed, the desktop functionality and documentation is a bit lacklustre. I mostly only ran this on the desktop to help me debug the raspi. In fact, ensuring the code ran on the pi dictated quite a few of the seemingly odd aspects of the repo:

  • Python 2.7 was required for running on the pi because of the specific version of tensorflow required, along with the limited binaries available through APT.
  • Seperate requirements lists were required for pi and desktop installation, because of the above.

I'm really happy for anyone to submit pull requests to improve the desktop functionality.

python2 -m pip install run --user # forces the use of the pip linked to legacy Python even on a Mac that also has modern Python installed.