【问题标题】:Releasing a python package with tkinter for pip使用 tkinter 为 pip 发布 python 包
【发布时间】:2017-09-13 09:51:58
【问题描述】:

我在 Python 中使用 Tkinter 构建了一个小测验,我希望发布该游戏供所有人玩,以便人们只需 pip install 即可玩游戏。

我已经通过文档发布了一个 PyPi 包,我发布了一个,它安装成功。但是,我无法从命令行启动应用程序,也无法查找二进制文件。我不知道我哪里错了。请帮帮我。

我的 setup.py 文件如下所示

from setuptools import setup
from codecs import open
from os import path

here = path.abspath(path.dirname(__file__))

with open(path.join(here, 'README.rst')) as f:
    long_description = f.read()

setup(
    name='py-quiz',
    version='0.1.1',
    description='Python based Quiz game.',
    long_description=long_description,
    author='Abhijit Nathwani',
    author_email='abhijit.nathwani@gmail.com',
    LICENSE='MIT',
    url='https://github.com/abhijitnathwani/PyQuiz',
    keywords='pyquiz tkinter'

)

为了打包,我使用

python setup.py sdist upload

该包已成功添加到 PyPi 包中,我可以使用以下命令安装它:

pip install py-quiz

安装的输出:

Collecting py-quiz
  Downloading py-quiz-0.1.1.tar.gz
Installing collected packages: py-quiz
  Running setup.py install for py-quiz ... done
Successfully installed py-quiz-0.1.1

但是当我这样做时,

user@somecomputer:~/PyQuiz$ py-quiz
py-quiz: command not found

如何从命令行启动游戏?请帮帮我。

应用代码维护here

【问题讨论】:

  • Abhijit,你错过了在创建源分发之前注册设置文件 $ python setup.py 注册,详情python-packaging.readthedocs.io/en/latest/minimal.html
  • 我做到了。但是得到了响应`Server response (410): Project pre-registration is no longer required or supported, so continue directly to upload files.`。注册现在已被弃用。我们只需要直接上传。 @Anup
  • 在设置中添加入口点:entry_points={ 'console_scripts': [ 'my_project = my_project.__main__:main' ] },
  • 我按照您的指示尝试过,但仍然没有帮助。将我的最终脚本重命名为“main.py”,并添加了一个要调用的 main() 函数。还是不行。你能详细说明一下吗? @Anup
  • 我看到你解决了问题here(好吧!)。未来的搜索者可以在下面添加您的答案。 ;-)

标签: python tkinter packaging pypi


【解决方案1】:

我最终通过以下更改解决了上述问题。 目录中必须有创建的包,文件夹结构如下:

<Directory>
|-setup.py
|-dist
|-LICENCSE
|-readme
|-<package-name>
 |-__init__.py
 |-__main__.py
 |-other files 

setup.py下面的改动应该是

entry_points={ 'console_scripts':['<command_name> = <package_name>.__main__:<function to be called>']

就我而言,如下:

entry_points={ 'console_scripts':['py-quiz = py_quiz.__main__:main']

重点是在您的项目目录中创建一个包。这应该可以解决主要问题。

【讨论】:

    猜你喜欢
    • 2020-07-14
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多