我已经在网上搜索了很长时间,但似乎无法为最终用户分发python脚本而费解。
我一直在使用此命令python samplemodule.py "args1"
在命令行上使用脚本。>
而且这也是我希望用户也可以在其命令行的末尾使用它的方式。但是我担心的是,某些模块与其他库或模块有依赖关系。
我的脚本都在Project的根目录中时有效,但是当我尝试将它们打包并放在子目录中时,一切崩溃了。
一个例子是我现在无法运行我的脚本,因为当我从data
子目录导入模块时,该脚本出错。>
这是我的项目结构。
MyProject \formatter __init__.py __main__.py formatter.py addfilename.py addscrapertype.py ...\data __init__.py helper.py csv_formatter.py setup.py
csv_formatter.py文件只是调用formatter.main的包装。
更新:我现在能够生成tar.gz软件包,但是在我的计算机上安装该软件包时无法调用该软件包。
这是setup.py:
import setuptools with open("README.md", "r") as fh: long_description = fh.read() setuptools.setup( name="formatter", version="1.0.1", author="My Name", author_email="[email protected]", description="A package for cleaning and reformatting csv data", long_description=long_description, long_description_content_type="text/markdown", url="https://github.com/RhaEL012/Python-Scripts", packages=["formatter"], include_package_data=True, package_data={ # If any package contains *.txt or *.rst files, include them: "": ["*.csv", "*.rst", "*.txt"], }, entry_points={ "console_scripts": [ "formatter=formatter.formatter:main" ] }, classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], python_requires='>=3.6', install_requires=[ "pandas" ] )
现在,在计算机上安装软件包后,我无法调用该模块,并导致错误:
Z:\>addfilename "C:\Users\Username\Desktop\Python Scripts\"
更新:我尝试在虚拟环境中安装setup.py,只是为了查看错误的出处。
我先安装它,然后收到以下错误:FileNotFoundError: [Errno 2] no such file or directory: 'README.md'
我尝试将README.md
包含在MANIFEST.in
中,但还是没有运气。因此,我尝试将其设置为字符串,以查看是否可以继续安装。
安装继续,但随后又遇到一个错误,提示package directory 'formatter' does not exist
我已经在网上搜索了很长时间,但似乎无法为最终用户分发python脚本而费解。我一直在命令行上使用脚本...
由于我无法查看您的特定文件,所以我仅说明我通常如何解决此问题。
这是我通常设置命令行界面(cli)工具的方式。项目文件夹如下所示:
我不同意其他答案。您不应在__init__.py中运行脚本,而应在__main__.py中运行脚本。
我不确定这是否有帮助,但是通常我会使用wheel软件包来打包我的python脚本: