Python distutils错误:“ [目录] ...不存在或不是常规文件” [英] Python distutils error: "[directory]... doesn't exist or not a regular file"

查看:63
本文介绍了Python distutils错误:“ [目录] ...不存在或不是常规文件”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

让我们采用以下项目布局:

Let's take the following project layout:

$ ls -R .
.:
package  setup.py

./package:
__init__.py  dir  file.dat  module.py

./package/dir:
tool1.dat  tool2.dat

以下内容为 setup.py

$ cat setup.py 
from distutils.core import setup


setup(name='pyproj',
      version='0.1',

      packages=[
          'package',
      ],
      package_data={
          'package': [
              '*',
              'dir/*',
          ],
      },
     )

如您所见,我想包括所有非- package / package / dir / 目录中的Python文件。但是,运行 setup.py install 会引发以下错误:

As you can see, I want to include all non-Python files in package/ and package/dir/ directories. However, running setup.py install would raise the following error:

$ python setup.py install
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/package
copying package/module.py -> build/lib/package
copying package/__init__.py -> build/lib/package
error: can't copy 'package/dir': doesn't exist or not a regular file

有什么用?

推荐答案

在您的 package_data ,您的'*'全局名称将匹配 package / dir 本身,并尝试将该目录复制为文件,导致失败。找到与目录 package / dir 不匹配的全局名称,按照以下几行重写您的 setup.py

In your package_data, your '*' glob will match package/dir itself, and try to copy that dir as a file, resulting in a failure. Find a glob that won't match the directory package/dir, rewriting your setup.py along these lines:

from distutils.core import setup

setup(name='pyproj',
      version='0.1',

      packages=[
          'package',
      ],
      package_data={
          'package': [
              '*.dat',
              'dir/*'
          ],
      },
     )

以您的示例为例,这只是将'*'更改为'*。dat',尽管您可能需要进一步优化glob,但只需确保它与'dir'

Given your example, that's just changing '*' to '*.dat', although you'd probably need to refine your glob more than that, just ensure it won't match 'dir'

这篇关于Python distutils错误:“ [目录] ...不存在或不是常规文件”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆