您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用可执行文件打包Python库

5b51 2022/1/14 8:21:57 python 字数 3914 阅读 500 来源 www.jb51.cc/python

我刚刚完成了一个模块,想要打包它.我已经阅读了文档和这个问题packaging a python application,但是当我没有要导入的包但是要启动的脚本时,我不确定如何继续.该项目看起来像这样:Project/ |-- README |-- requirement.txt |-- driver.py |-- run.py |-- module_1 |

概述

我刚刚完成了一个模块,想要打包它.我已经阅读了文档和这个问题packaging a python application,但是当我没有要导入的包但是要启动的脚本时,我不确定如何继续.

该项目看起来像这样:

Project/
|-- README
|-- requirement.txt
|-- driver.py
|-- run.py
|-- module_1
|   |-- __init__.py
|   |-- class_1.py
|   |-- class_2.py
|-- module 2
|-- |-- __init__.py
|-- |-- class_1.py
|-- |-- class_2.py

为了启动我做的工具:

python run.py arg1 --option arg2

driver.py导入所有其他模块并定义Driver类和一些函数. run.py导入driver.py,解析参数,设置记录器并按其他方式调用函数来完成工作.

我不确定setup.py的配置,还需要根目录下的全局__init__.py吗?根据我的理解,我只能执行导入项目,不使用其参数启动脚本run.py.

从其他读数来看,也许我应该尝试告诉Driver.py是包并使用setup()的entry_points选项.但我不明白如何正确地完成所有这些工作.

谢谢你的热心帮助!

Project/
|-- README
|-- requirement.txt
|-- setup.py
|-- scripts/
|   |-- driver.py
|-- driver/
|   |-- __init__.py
|   |-- module_1
|   |   |-- __init__.py
|   |   |-- class_1.py
|   |   |-- class_2.py
|   |-- module_2
|   |-- |-- __init__.py
|   |-- |-- class_1.py
|   |-- |-- class_2.py

我将run.py重命名为scripts / driver.py,而之前在driver.py中的代码现在是driver / __ init__.py.

你的setup.py应该是这样的

from setuptools import setup. find_packages

setup(
    name='driver',version='1.0',packages=find_packages(),scripts=['scripts/driver.py'],)

这会将scripts / driver.py复制到python Scripts目录.我将run.py重命名为driver.py,因为run非常通用,并且您希望脚本名称是唯一的,因为所有python包共享相同的脚本位置.

或者,您可以使用console_scripts入口点.在这种情况下,您将没有单独的scripts / driver.py脚本.相反,你只需要在你的包中有一个功能.在这种情况下,您可以将脚本/ driver.py中的所有代码移动到driver / command_line.py中,并将其放在名为main()的函数中.然后将setup.py更改为此

setup(
    name='driver',entry_points = {
        'console_scripts': ['driver=driver.command_line:main'],}
)

此外,您应该阅读this docs page on python packaging.它涵盖了基础知识和许多常见用例.

总结

以上是编程之家为你收集整理的使用可执行文件打包Python库全部内容,希望文章能够帮你解决使用可执行文件打包Python库所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶