4

我有一个.py带有一些依赖项(lockfile、python-daemon)的 Python3 模块。是否有一种简单的方法可以将其与其依赖项打包,以便用户无需下载和安装其他模块?一个全包安装是我想要做的。

我尝试查看 setuptools、distribute 和 distutils,结果比开始时更加困惑。

4

5 回答 5

2

我经常看到的最简单的方法是将所有依赖项放在一个文件中(通常命名为requirements.txt),然后要求用户运行以下命令:

pip install -r requirements.txt

这是文件内容的示例(https://github.com/cenkalti/pypi-notifier/blob/master/requirements.txt):

Flask==0.10.1
Flask-Cache==0.12
Flask-SQLAlchemy==1.0
Flask-Script==0.5.3
GitHub-Flask==0.3.4
Jinja2==2.7
MarkupSafe==0.18
SQLAlchemy==0.8.2
...
于 2013-09-11T17:43:33.140 回答
1

cx_Freeze应该做你正在寻找的东西。

于 2013-09-11T17:48:11.023 回答
0

你可以很容易地用一些简单的东西来做到这一点,比如一个包含所有文件的 .zip 文件;只要所有文件都导出到同一个目录,那么它们应该都可以工作!缺点是如果模块有很多依赖项,即它们有额外的文件夹,您需要找到它们。

我还认为相当多的人/公司编写自己的打包系统,以便所有模块都在 1 个 .py 文件中,该文件在控制台中打开并将所有内容导出到正确的位置。不过,这将需要大量的工作,因此您可以尝试找到一个预建的。我已经采用了这种方法,但它并没有证明太费力,我不得不解压缩带有文件的 .zip...

作为另一种解决方案,您可以尝试 PyExe(我认为它被称为)将所有内容导出到单个 .exe 文件(尽管仅限 Windows)

我个人没有使用过 setuptools、distribute 或 distutils,所以很遗憾无法评论这些。

要记住的另一件事是每个模块的许可证,有些可能不允许重新分发,因此请先检查!

于 2013-09-11T17:50:53.427 回答
0

py2exe 很好,但会将您限制在 Windows 上。

在不限制您的受众并遵循公认的最佳实践的情况下执行此操作的最佳方法是创建一个文件,然后将您的项目上传requirements.txtgithub。请参阅https://github.com/sourcegraph/python-deps作为参考。以简单易读的格式列出依赖项,您可以使用 setup.py 中的 和 选项指定项目安装的命令和库模块。setup.pyrequirements.txtscriptspy_modules

假设您的 git 存储库位于 github.com/foo/bar,那么您的用户可以执行pip install git+https://github.com/foo/bar.

于 2013-09-12T04:45:13.980 回答
0

阅读官方 Python 打包教程

  • 你从你的模块创建一个 Python 包setup.py

  • 您可以在其中setup.py声明必须安装哪些其他 Python 包作为依赖项

  • 此外,您可以使用requirements.txt.

于 2015-12-05T06:11:46.903 回答