首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python可安装包

Python可安装包
EN

Stack Overflow用户
提问于 2018-11-12 19:51:07
回答 2查看 3.3K关注 0票数 4

因此,我正在做一个项目,在这里我必须创建一个可安装的Python包,在我的桌面(Windows )上安装它,并运行文件夹中包含的应用程序。在打包和安装代码之后,我在安装pip的路径中得到两个文件夹:

代码语言:javascript
复制
project_pkg
project_pkg-0.0.1.dist-info

在project_pkg文件夹中,我有一个文件夹和两个文件:

代码语言:javascript
复制
__pycache__
__init__.py
project.py

我想做的是通过cmd运行project.py。我该怎么做呢?文件init.py仅包含以下内容:

代码语言:javascript
复制
name = 'project'

更新

在阅读了@Patrick的答案之后,我发现了everything.Now,我只需输入project [args]就可以运行应用程序。当我这样做时,up按预期运行,输出是正确的,但当它即将完成时,我得到了这个奇怪的错误:

代码语言:javascript
复制
Traceback (most recent call last):
File "c:\...\appdata\local\programs\python\python37- 
32\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "c:\...\appdata\local\programs\python\python37 
-32\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\...\AppData\Local\Programs\Python\Python37- 
32\Scripts\project.exe\__main__.py", line 9, in <module>
TypeError: 'module' object is not callable

问题是我没有使用__main__.py,而且当我试图查找由最后一条路径指定的文件时,我什么也找不到。有什么想法吗?

更新2

我想出了一个临时解决方案,在应用程序运行时使用命令sys.exit()。我不知道它是否正确,但对我有用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-12 20:04:10

假设您使用的是setup.py打包,则需要设置entry_points配置。

看看肯尼斯·里茨的例子回购。他已经将其注释掉,但只需取消注释并将其转换为应用于您的项目。

包装示例回购

如果您在安装了项目的python环境中工作,这将允许您只在命令行中键入project [args]

下面是关于python打包的文档:Python打包文档

示例:

假设您有一个具有以下结构的项目:

代码语言:javascript
复制
project
  project/
    __init__.py
    cli.py
  setup.py
  README.md
  LICENSE

具有一个名为maincli.py函数,该函数负责代码的执行。

您可以将Kenneth的回购中注释掉的代码更改为:

代码语言:javascript
复制
entry_points={
    'console_scripts': ['project=project.cli:main'],
},
票数 1
EN

Stack Overflow用户

发布于 2018-11-12 19:53:18

使用-m标志运行具有cmd的模块:

代码语言:javascript
复制
python -m <package-name>

在你的情况下

代码语言:javascript
复制
python -m project
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53269147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档