【发布时间】:2020-10-12 11:20:08
【问题描述】:
我目前正在开发一个 PyPi 包,它利用了大约 350 MB 的音频文件和一个 Tkinter GUI。由于 50 MB 的限制,我无法将这些音频文件上传到 PyPi,因此我采用了一种创造性的方法来获取最终用户安装的文件。
我创建了一个函数 audio_download(),它使用GitPython 执行以下代码:
import os
from git import Repo
def audio_download():
path = os.path.join(os.path.split(os.path.realpath(__file__))[0],'audio')
git_link = GIT_LINK_HERE
if not os.path.isdir(path):
print('Cloning audio files to the package directory...')
Repo.clone_from(git_link,path)
print('Audio engine downloaded to {}'.format(path))
else:
print('Audio files already present in {}. If you want to uninstall, you must manually delete the folder.'.format(path))
简单地说,它会检查音频文件夹的包目录,如果不存在,它会克隆一个包含这些文件的 GitHub 存储库。
三个问题:
- 以这种方式操作使用 pip 安装的软件包是安全的还是不好的做法?
- 是否有更好的方法可以在所有平台上仅使用 Python 执行此操作? GitPython 需要安装 git,我希望即使是最缺乏经验的 Python 用户也能尽可能轻松地进行安装。
- 如果我想允许用户将文件下载到他们选择的文件夹(而不是一些深度嵌套的 Python 包),那么在我的 PyPi 包中跟踪文件夹的最佳方法是什么?只需编写一个带有文件夹路径的文件,或者更优雅的东西?
【问题讨论】:
-
git-lfs? github.com/git-lfs/git-lfs
-
@Chris_Rands 有没有办法将它与 PyPi 集成?我喜欢使用 pip 的简单性——最终用户当然可以从 git 存储库下载并手动运行 setup.py,但我也希望有一个简单的 pip 安装可用。