【问题标题】:[Setuptools]FileNotFoundError: [Errno 2] No such file or directory: 'f.txt', CLI app[Setuptools]FileNotFoundError: [Errno 2] No such file or directory: 'f.txt', CLI app
【发布时间】:2023-03-06 21:14:01
【问题描述】:

我想按照本教程制作一个 CLI 应用程序: https://trstringer.com/easy-and-nice-python-cli/, 我的文件系统具有以下结构:

app/
├── README.md
├── install.sh
├── app
  ├── __init__.py
  ├── __main__.py
  ├── text.txt
  ├── text1.txt
  └── text2.json
#the app.egg info was created automatically
├── app.egg-info
  ├── entry_points
  ├── SOURCES
└── setup.py

当我从终端调用应用程序时,我收到此错误: FileNotFoundError: [Errno 2] No such file or directory: 'text1.txt',即使它清楚地在目录中。 在我尝试将脚本转换为 CLI 应用程序之前,我称该文本文件工作的代码,不确定我是否必须将这些文本文件移动到特定目录或指定我在某处需要这些文件。

这里setup.py:

from setuptools import setup
setup(
    name = 'app',
    version = '0.1.0',
    packages = ['app'],
    entry_points = {
        'console_scripts': [
            'app = app.__main__:some_function'
        ]
    })

如果您需要有关代码的更多信息,或者想了解如何将我的 python 脚本转换为功能强大的 CLI 应用程序,请随时告诉我! 我也在使用 click。

【问题讨论】:

标签: python command-line-interface setuptools


【解决方案1】:

没有看到你的脚本,我在这里猜测了一下,但我怀疑问题是你正在做类似“open('file1.txt')”的事情,当你调用程序时它工作正常在与 file1.txt 相同的目录中。但是,当 file1.txt 在包中时,您无法通过这种方式找到它的路径。

我很确定这就是您所需要的。您需要通读并点击 ResourceManager API 的链接。

https://setuptools.readthedocs.io/en/latest/userguide/datafiles.html

【讨论】:

  • 我阅读了你链接的内容并尝试实现它,这里我做了什么:packages = find_packages("app"), package_dir={"": "app"}, package_data={"": ["*.txt","*.json"]}, exclude_package_data={"": ["README.txt"]}, 但我仍然遇到同样的错误,我只是将上面的代码添加到 setup.py,我还有什么遗漏吗?
  • 在被打包的脚本中。打包后,它可以使用 ResourceManager API 来查找其他打包的文件,包括数据文件。 setuptools.readthedocs.io/en/latest/…
猜你喜欢
  • 2022-01-24
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 2012-08-25
  • 2019-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多