为什么我的一些文件在使用setuptools打包的python模块的安装中不可用?
因此,我制作了一个小型应用程序,我通常希望将其打包并与世界共享。我阅读了使用setuptools打包应用程序的教程。在我被困在一个地方之前,一切都很顺利 我的目录结构如下所示:为什么我的一些文件在使用setuptools打包的python模块的安装中不可用?,python,python-2.7,pyqt4,setuptools,distutils,Python,Python 2.7,Pyqt4,Setuptools,Distutils,因此,我制作了一个小型应用程序,我通常希望将其打包并与世界共享。我阅读了使用setuptools打包应用程序的教程。在我被困在一个地方之前,一切都很顺利 我的目录结构如下所示: - MyApp - setup.py - README.md - LICENSE.txt - MANIFEST.in - myapp - __init__.py - index.py - utils - __init__.py - helper.py
- MyApp
- setup.py
- README.md
- LICENSE.txt
- MANIFEST.in
- myapp
- __init__.py
- index.py
- utils
- __init__.py
- helper.py
- some_dump.pickle
- images
- folder_1
- image_1.jpg
- image_2.jpg
- folder_2
- another_image_1.jpg
- another_image_2.jpg
- sounds
- sound_1.wav
- sound_2.wav
考虑到这个目录结构,我创建了setup.py
文件,其中packages
选项作为包含myapp
和myapp.utils
的列表。我还创建了一个清单.in
文件,该文件将包含我要打包但默认情况下未包含的所有文件。以下是清单文件的内容:
include README.md
include LICENSE.txt
include myapp/utils/*.pickle
include myapp/utils/sounds/*.wav
include myapp/utils/images/folder_1/*.jpg
include myapp/utils/images/folder_2/*.jpg
问题是,所有这些文件都是按照分发包(.zip)中的要求创建的,但是当我尝试使用分发包尝试自己安装包时,我看不到图像、声音或pickle文件。
i、 e.当我运行python setup.py install
时,在build/lib
文件夹中看不到这些文件。我不知道原因是什么。有人能帮我解决这个问题吗
谢谢清单是关于分发的,不是关于安装的。 您需要在
setup.py
中指定要安装的内容和位置:
setup(...,
data_files=[(whereto1, [file1, file2]),
(whereto2, [file3])]
)
请参见您似乎有几个不同的问题(例如,一个关于安装资源文件,另一个关于从PyPi安装PyQt)。请将它们拆分为单独的StackOverflow问题。@pts:一般来说,这是对的,但OP会问这两个问题在包装问题中是否有共同的根本原因。第二个问题可能不是第一个问题的原因。同时,通常不在包的中间安装非代码文件;改用资源文件API。然而,IIRC(已经有一段时间了),PyQt有自己的资源文件API,而不是
setuptools
/pkg_resources
中的API,您可能希望使用它。