简体   繁体   中英

Issue installing my Python 3 package

Recently put together a small project to get familiar with Python. In the process of making the project distributable, I created the following setup.py :

# -*- coding: utf-8 -*-


import re
from setuptools import setup


setup(
    name = 'bfi',
    packages = ['bfi'],
    entry_points = {
        'console_scripts' : ['bfi = bfi.bfi:main']
    },
    version = '1.0',
    description = 'Brainf*ck Interpreter w/Shell-Mode',
    author = 'Kyle Martinez',
    install_requires = ['getch', 'overloading']
)

I then attempted to install the package from the command-line, like so:

python3 setup.py install

Which seems to work! Running the command gives me the following output:

running install
running bdist_egg
running egg_info
writing requirements to bfi.egg-info/requires.txt
writing top-level names to bfi.egg-info/top_level.txt
writing bfi.egg-info/PKG-INFO
writing dependency_links to bfi.egg-info/dependency_links.txt
writing entry points to bfi.egg-info/entry_points.txt
reading manifest file 'bfi.egg-info/SOURCES.txt'
writing manifest file 'bfi.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.6-intel/egg
running install_lib
running build_py
creating build/bdist.macosx-10.6-intel/egg
creating build/bdist.macosx-10.6-intel/egg/bfi
copying build/lib/bfi/__init__.py -> build/bdist.macosx-10.6-intel/egg/bfi
copying build/lib/bfi/__main__.py -> build/bdist.macosx-10.6-intel/egg/bfi
copying build/lib/bfi/bfi.py -> build/bdist.macosx-10.6-intel/egg/bfi
copying build/lib/bfi/bficore.py -> build/bdist.macosx-10.6-intel/egg/bfi
byte-compiling build/bdist.macosx-10.6-intel/egg/bfi/__init__.py to __init__.cpython-34.pyc
byte-compiling build/bdist.macosx-10.6-intel/egg/bfi/__main__.py to __main__.cpython-34.pyc
byte-compiling build/bdist.macosx-10.6-intel/egg/bfi/bfi.py to bfi.cpython-34.pyc
byte-compiling build/bdist.macosx-10.6-intel/egg/bfi/bficore.py to bficore.cpython-34.pyc
creating build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying bfi.egg-info/PKG-INFO -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying bfi.egg-info/SOURCES.txt -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying bfi.egg-info/dependency_links.txt -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying bfi.egg-info/entry_points.txt -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying bfi.egg-info/requires.txt -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying bfi.egg-info/top_level.txt -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating 'dist/bfi-1.0-py3.4.egg' and adding 'build/bdist.macosx-10.6-intel/egg' to it
removing 'build/bdist.macosx-10.6-intel/egg' (and everything under it)
Processing bfi-1.0-py3.4.egg
Removing /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/bfi-1.0-py3.4.egg
Copying bfi-1.0-py3.4.egg to /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages
bfi 1.0 is already the active version in easy-install.pth
Installing bfi script to /Library/Frameworks/Python.framework/Versions/3.4/bin
Installed /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/bfi-1.0-py3.4.egg 
Processing dependencies for bfi==1.0
Searching for overloading==0.5.0
Best match: overloading 0.5.0
Adding overloading 0.5.0 to easy-install.pth file

Using /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages
Searching for getch==1.0
Best match: getch 1.0
Adding getch 1.0 to easy-install.pth file

Using /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages
Finished processing dependencies for bfi==1.0 

However, when I go to the command-line and run bfi , I get a big 'ol SyntaxError:

Traceback (most recent call last):
  File "/usr/local/bin/bfi", line 9, in <module>
    load_entry_point('bfi==1.0', 'console_scripts', 'bfi')()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", li
ne 357, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", li
ne 2394, in load_entry_point
    return ep.load()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", li
ne 2108, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/Library/Python/2.7/site-packages/bfi-1.0-py2.7.egg/bfi/bfi.py", line 42
    print('➲ ', end='')
                     ^
SyntaxError: invalid syntax 

I'm kinda new to all of this, so I'd appreciate any help I can get! How do I resolve this?

Note: As you may have deduced, my Macbook has multiple versions of Python installed.

It looks like you had also installed 'byi' package using python2.7 probably using python setup.py install

When you are running the console script byi, the shim script is probably pointing to python 2.7. You can confirm by looking at the first line of the generated shim script: head -1 /usr/local/bin/byi

You may try removing script /usr/local/bin/byi and re-running setup with python3. That should generate a new shim script with python3 in source. You can also control which python to use by adding additional option: options = { 'build_scripts': { 'executable': '/usr/bin/env python3', }, } in setup.py

In addition, it looks like your package is not compatible with python 2.7 . The line in error will fail on python 2.7 , as the older version excepts a tuple instead of function args: print '➲ ', instead of print('➲ ', end='') .

If you do want python 2.x support, you can install six module

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM