简体   繁体   English

安装我的Python 3软件包时出现问题

[英]Issue installing my Python 3 package

Recently put together a small project to get familiar with Python. 最近,我们组织了一个小项目来熟悉Python。 In the process of making the project distributable, I created the following setup.py : 在使项目可分发的过程中,我创建了以下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: 但是,当我转到命令行并运行bfi ,出现了一个很大的'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. 注意:您可能已经推断出,我的Macbook安装了多个版本的Python。

It looks like you had also installed 'byi' package using python2.7 probably using python setup.py install 看起来您还使用python2.7安装了'byi'软件包,可能使用了python setup.py install

When you are running the console script byi, the shim script is probably pointing to python 2.7. 当您通过byi运行控制台脚本时,shim脚本可能指向python 2.7。 You can confirm by looking at the first line of the generated shim script: head -1 /usr/local/bin/byi 您可以通过查看生成的shim脚本的第一行来确认: head -1 /usr/local/bin/byi

You may try removing script /usr/local/bin/byi and re-running setup with python3. 您可以尝试删除脚本/usr/local/bin/byi并使用python3重新运行安装程序。 That should generate a new shim script with python3 in source. 那应该在源代码中生成一个带有python3的新填充脚本。 You can also control which python to use by adding additional option: options = { 'build_scripts': { 'executable': '/usr/bin/env python3', }, } in setup.py 您还可以通过添加其他选项来控制要使用的python: options = { 'build_scripts': { 'executable': '/usr/bin/env python3', }, }在setup.py中

In addition, it looks like your package is not compatible with python 2.7 . 此外,您的软件包似乎与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='') . 错误的行将在python 2.7上失败,因为较旧的版本除了元组而不是函数args之外: print '➲ ',而不是print('➲ ', end='')

If you do want python 2.x support, you can install six module 如果确实需要python 2.x支持,则可以安装六个模块

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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