无法在python安装程序中找到并读取文件以打包我的项目

uubf1zoe  于 2024-01-05  发布在  Python
关注(0)|答案(2)|浏览(200)

我没有python打包的经验。我试图用python3 -m build命令打包我的项目。在安装文件中,我需要打开一些文件,其中包括VERSION文件,但我得到错误,他们找不到。
这是我在setup.py文件中打开它的方式

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

字符串
我得到的错误是:

  1. /private/var/folders/pk/r6xddw312z9d5_rfggl0d5pw0000gn/T/build-via-sdist-trdyv1sv/my-project-0.0.1
  2. Traceback (most recent call last):
  3. File "/usr/local/lib/python3.9/site-packages/pep517/in_process/_in_process.py", line 280, in <module>
  4. main()
  5. File "/usr/local/lib/python3.9/site-packages/pep517/in_process/_in_process.py", line 263, in main
  6. json_out['return_val'] = hook(**hook_input['kwargs'])
  7. File "/usr/local/lib/python3.9/site-packages/pep517/in_process/_in_process.py", line 114, in get_requires_for_build_wheel
  8. return hook(config_settings)
  9. 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
  10. return self._get_build_requires(
  11. 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
  12. self.run_setup()
  13. 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
  14. exec(compile(code, __file__, 'exec'), locals())
  15. File "setup.py", line 49, in <module>
  16. with io.open(os.path.join(here, 'my-project', 'VERSION' )) as f:
  17. 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'


又何为道

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


在哪里找不到文件?
我的最终结果是,构建文件夹和.egg-info文件被正确创建,其中打包了tar.gz文件,但没有打包wheel文件。

hk8txs48

hk8txs481#

我不认为你需要在这一行额外的my-project引用。

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

字符串
这给了你什么给予:

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


你也可以尝试在主文件夹中创建一个名为_version.py的文件(在setup.py旁边)。然后简单地在文件的顶部添加__version__ = '1.107.7'。现在你可以将其导入setup.py中,如下所示:

  1. from _version import __version__
  2. setup(
  3. name=NAME,
  4. version=__version__,
  5. ...

展开查看全部
xmjla07d

xmjla07d2#

python3 -m build可能不包括非.py文件在您的tar文件,这就是为什么你得到一个“文件找不到错误”当运行它.
请注意,当build尝试安装您的软件包作为验证步骤时,会发生错误。
您可以通过将MANIFEST.in文件添加到包根目录来解决此问题。此文件的内容只是您希望添加到.tar文件的非.py文件的列表。例如

  1. include LICENSE
  2. include requirements.txt
  3. include my-project/VERSION

字符串
另外,在setup.py中设置include_package_data=True
您可以阅读更多关于here的信息。

相关问题