所以我正在做一个项目,我必须创建一个可安装的Python程序包,将其安装在桌面上(Windows OS),然后运行该文件夹中包含的应用程序。打包并安装代码后,在安装pip的路径中有2个文件夹:
project_pkg
project_pkg-0.0.1.dist-info
在project_pkg文件夹中,我有1个文件夹和2个文件:
__pycache__
__init__.py
project.py
我想做的是通过cmd运行project.py。我该怎么做?文件 init .py仅包含以下内容:
name = 'project'
更新
阅读@Patrick Allen的答案后,我已经了解了所有内容。现在,只需键入project [args]
就可以运行该应用程序。当我执行此操作时,按预期的方式运行,并且输出正确,但是当它即将完成时,出现了这个奇怪的错误:
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
,而且当我尝试查找最后一条路径指定的文件时,找不到任何东西。有什么想法吗?
UPDATE V2
我想出了一个临时解决方案,当应用程序完成运行时,使用命令sys.exit()
。我不知道它是否正确,但是对我有用。
答案 0 :(得分:0)
使用-m
标志通过cmd运行模块:
python -m <package-name>
以您的情况
python -m project
答案 1 :(得分:0)
假设您使用的是setup.py
包装,则需要设置entry_points
配置。
查看Kenneth Reitz的示例存储库。他已将其注释掉,但只需取消注释并将其转换为适用于您的项目即可。
假设您正在安装项目的python环境中工作,那么您只需在命令行中输入project [args]
。
以下是有关python打包的文档:Python Packaging Docs
示例:
假设您有一个具有以下结构的项目:
project
project/
__init__.py
cli.py
setup.py
README.md
LICENSE
在main
中有一个名为cli.py
的函数,负责执行代码。
您将在Kenneth的仓库中将注释掉的代码更改为:
entry_points={
'console_scripts': ['project=project.cli:main'],
},