2017-10-08 4 views
0

Récemment mis en place un petit projet pour se familiariser avec Python. Dans le processus de fabrication du distribuables du projet, j'ai créé les éléments suivants setup.py:Problème lors de l'installation de mon package Python 3

# -*- 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'] 
) 

Je puis tenté d'installer le package à partir de la ligne de commande, comme ceci:

python3 setup.py install 

Ce qui semble fonctionner! L'exécution de la commande me donne la sortie suivante:

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 

Cependant, quand je vais à la ligne de commande et d'exécuter bfi, je reçois un grand « SyntaxError ol:

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 

Je suis un peu nouveau à tout cela, j'apprécierais toute aide que je pourrais recevoir! Comment résoudre ça?

Note: Comme vous pouvez l'avoir déduit, mon Macbook a plusieurs versions de Python installées.

Répondre

0

Il semble que vous aviez également installé 'BYI' package en utilisant python2.7 probablement à l'aide python setup.py install

Lorsque vous exécutez le script console BYI, ​​le script shim pointe probablement Python 2.7. Vous pouvez confirmer en regardant la première ligne du script généré shim: head -1 /usr/local/bin/byi

Vous pouvez essayer de retirer le script /usr/local/bin/byi et la configuration de réexécuter avec python3. Cela devrait générer un nouveau script shim avec python3 dans la source. Vous pouvez également contrôler python à utiliser en ajoutant l'option supplémentaire: options = { 'build_scripts': { 'executable': '/usr/bin/env python3', }, } dans setup.py

En outre, il semble que votre colis est pas compatible avec Python 2.7. La ligne par erreur échouera sur python 2.7, puisque l'ancienne version exceptera un tuple au lieu de la fonction args: print '➲ ', au lieu de print('➲ ', end='').

Si vous voulez avoir le support 2.x python, vous pouvez installer six module

+0

Il n'y a pas de différence entre les deux déclarations 'print' dans votre avant-dernier paragraphe. –

+0

il y a une petite différence. voir l'espace après l'impression. En premier lieu, il sera considéré comme un tuple à cause de l'espace. En seconde, il sera considéré comme des arguments de fonction. – sukrit007

+0

Je sais que l'espace est là. Ce que je veux dire, c'est qu'il n'y a pas de différence fonctionnelle. L'espace n'a pas d'importance. Ce n'est pas une syntaxe valide pour un tuple, que l'espace soit précédé ou non. –