【问题标题】:Cannot find and read file in python setup to package my project在 python 设置中找不到和读取文件来打包我的项目
【发布时间】:2021-09-10 12:53:39
【问题描述】:

我对 python 打包没有经验。我正在尝试使用命令 python3 -m build 打包我的项目。在安装文件中,我需要打开一些文件,其中包括 VERSION 文件,但我得到了找不到它们的错误。

这就是我在 setup.py 文件中打开它的方式

here = os.path.abspath(os.path.dirname(__file__))
about = {}
with io.open(os.path.join(here, 'my-project', 'VERSION')) as f:
     _version = f.read().strip()
     about["__version__"] = _version 

我得到的错误是:

/private/var/folders/pk/r6xddw312z9d5_rfggl0d5pw0000gn/T/build-via-sdist-trdyv1sv/my-project-0.0.1
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/pep517/in_process/_in_process.py", line 280, in <module>
 main()
File "/usr/local/lib/python3.9/site-packages/pep517/in_process/_in_process.py", line 263, in main
 json_out['return_val'] = hook(**hook_input['kwargs'])
File "/usr/local/lib/python3.9/site-packages/pep517/in_process/_in_process.py", line 114, in get_requires_for_build_wheel
 return hook(config_settings)
File "/private/var/folders/pk/r6xddw312z9d5_rfggl0d5pw0000gn/T/build-env 5euz44zr/lib/python3.9/site-packages/setuptools/build_meta.py", line 154, in get_requires_for_build_wheel
 return self._get_build_requires(
File "/private/var/folders/pk/r6xddw312z9d5_rfggl0d5pw0000gn/T/build-env 5euz44zr/lib/python3.9/site-packages/setuptools/build_meta.py", line 135, in _get_build_requires
 self.run_setup()
File "/private/var/folders/pk/r6xddw312z9d5_rfggl0d5pw0000gn/T/build-env 5euz44zr/lib/python3.9/site-packages/setuptools/build_meta.py", line 150, in run_setup
 exec(compile(code, __file__, 'exec'), locals())
File "setup.py", line 49, in <module>
 with io.open(os.path.join(here, 'my-project', 'VERSION' )) as f:
FileNotFoundError: [Errno 2] No such file or directory: '/private/var/folders/pk/r6xddw312z9d5_rfggl0d5pw0000gn/T/build-via-sdist-trdyv1sv/my-project-0.0.1/my-project/VERSION'

还有什么路径

 /private/var/folders/pk/r6xddw312z9d5_rfggl0d5pw0000gn/T/build-via-sdist-trdyv1sv/ 

文件在哪里找不到?

我的最终结果是使用打包的 tar.gz 文件而不是 wheel 文件正确创建了构建文件夹和 .egg-info 文件。因此我认为轮子存在一些问题

【问题讨论】:

    标签: python package python-wheel


    【解决方案1】:

    我认为您不需要此行中的额外 my-project 引用。

    with io.open(os.path.join(here, 'my-project', 'VERSION')) as f:
    

    这会给你带来什么:

    with io.open(os.path.join(here, 'VERSION')) as f:
    

    您还可以尝试在主文件夹(setup.py 旁边)中创建一个名为 _version.py 的文件。 然后只需在文件顶部添加 __version__ = '1.107.7'。 您现在可以将其导入 setup.py 中:

    from _version import __version__
    
    setup(
        name=NAME,
        version=__version__,
    ...
    

    【讨论】:

    • 谢谢!我需要 my-project 因为它是版本文件所在的位置。我在打开需求文件时也遇到了同样的问题。找不到文件的/private/var/folders/pk/r6xddw312z9d5_rfggl0d5pw0000gn/T/build-via-sdist-trdyv1sv/路径是什么?
    • 不确定你的意思。您能否提供一个粘贴箱,说明您在运行我上面提到的两件事时得到了什么?
    • from _version import version ModuleNotFoundError: No module named '_version' 你走错路了。我是说我在打开和读取另一个文件时遇到问题
    • 是的,我相信你。但是,您能否提供您正在执行的命令和完整日志的 pastebin。它肯定会帮助我或其他任何试图帮助你的人。
    • 请问,什么是 pastebin? _version 也不是一个模块,不能被调用。它只是一个文件。所以不能对你的建议做更多的事情。我正在运行的命令和错误都粘贴在帖子中。谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多