因此,我正在做一个项目,在这里我必须创建一个可安装的Python包,在我的桌面(Windows )上安装它,并运行文件夹中包含的应用程序。在打包和安装代码之后,我在安装pip的路径中得到两个文件夹:
project_pkg
project_pkg-0.0.1.dist-info在project_pkg文件夹中,我有一个文件夹和两个文件:
__pycache__
__init__.py
project.py我想做的是通过cmd运行project.py。我该怎么做呢?文件init.py仅包含以下内容:
name = 'project'更新
在阅读了@Patrick的答案之后,我发现了everything.Now,我只需输入project [args]就可以运行应用程序。当我这样做时,up按预期运行,输出是正确的,但当它即将完成时,我得到了这个奇怪的错误:
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()。我不知道它是否正确,但对我有用。
发布于 2018-11-12 20:04:10
假设您使用的是setup.py打包,则需要设置entry_points配置。
看看肯尼斯·里茨的例子回购。他已经将其注释掉,但只需取消注释并将其转换为应用于您的项目。
如果您在安装了项目的python环境中工作,这将允许您只在命令行中键入project [args]。
下面是关于python打包的文档:Python打包文档
示例:
假设您有一个具有以下结构的项目:
project
project/
__init__.py
cli.py
setup.py
README.md
LICENSE具有一个名为main的cli.py函数,该函数负责代码的执行。
您可以将Kenneth的回购中注释掉的代码更改为:
entry_points={
'console_scripts': ['project=project.cli:main'],
},发布于 2018-11-12 19:53:18
使用-m标志运行具有cmd的模块:
python -m <package-name>在你的情况下
python -m projecthttps://stackoverflow.com/questions/53269147
复制相似问题