我有一个带有一些依赖项的单个Python3 .py
模块(lockfile,python-daemon)。是否有一种简单的方法来将其与其依赖关系打包,以便用户不需要下载和安装其他模块?所有包含的安装都是我想要做的。
我试着查看setuptools,分发和distutils,结果比我开始时更加困惑。
答案 0 :(得分:1)
我经常使用的最简单的方法是将所有依赖项放在一个文件中(通常名为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
...
答案 1 :(得分:1)
cx_Freeze应该做你想要的。
答案 2 :(得分:0)
你可以很容易地用一些包含所有文件的.zip文件来做这件事;只要所有文件都导出到同一目录,那么它们应该全部工作!如果模块有很多依赖项,那就是失败,即它们有额外的文件夹,你需要找到它们。
我也认为有相当数量的人/公司编写自己的包装系统,以便所有模块都在1 .py文件中,在控制台中打开并将所有内容导出到正确的位置。这需要相当多的工作,所以你可以尝试找到一个预建的。我已经采用了这种方法,它并没有证明太费力的单位我不得不解压缩.zips文件...
作为另一种解决方案,您可以尝试PyExe(我认为它被称为)将所有内容导出到单个.exe文件(仅限Windows)
我个人没有使用过setuptools,发布或者是distutils所以不幸的是不能评论那些。
要记住的另一件事是每个模块的许可证,有些可能不允许重新分配,所以请先检查!
答案 3 :(得分:0)
py2exe很好,但会限制你使用Windows。
在不限制受众群体并遵循公认的最佳做法的情况下,最好的方法是创建requirements.txt
和setup.py
文件,然后将项目上传到github。请参阅https://github.com/sourcegraph/python-deps作为参考。 requirements.txt
以简单易读的格式列出依赖项,并使用setup.py中的scripts
和py_modules
选项指定项目安装的命令和库模块。 / p>
假设您的git存储库位于github.com/foo/bar,您的用户可以pip install git+https://github.com/foo/bar
。
答案 4 :(得分:0)
Read official Python packaging tutorial
您可以使用setup.py
在requirements.txt
中,您可以声明必须安装其他Python包作为依赖项
此外,您可以使用{{1}}缩小应用程序特定的依赖项版本。