用pip安装了我自己的软件包。我该如何运行?

时间:2018-11-12 19:51:07

标签: python cmd pip package

所以我正在做一个项目,我必须创建一个可安装的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()。我不知道它是否正确,但是对我有用。

2 个答案:

答案 0 :(得分:0)

使用-m标志通过cmd运行模块:

python -m <package-name>

以您的情况

python -m project

答案 1 :(得分:0)

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

查看Kenneth Reitz的示例存储库。他已将其注释掉,但只需取消注释并将其转换为适用于您的项目即可。

Packaging Example Repo

假设您正在安装项目的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'],
},