我想知道是否和.deb包一样,在我的setup.py中可以配置我的包的依赖项,然后运行:
$ sudo python setup.py install
它们会自动安装。已经研究过互联网,但我发现只是让我感到困惑,比如“需要”,“install_requires”和“requirements.txt”
答案 0 :(得分:2)
只需在您的lib文件夹中创建requirements.txt
并编写所有依赖项,如下所示:
gunicorn
docutils>=0.3
lxml==0.5a7
然后创建一个setup.py
脚本并在以下位置读取requirements.txt
:
import os
thelibFolder = os.path.dirname(os.path.realpath(__file__))
requirementPath = thelibFolder + '/requirements.txt'
install_requires = [] # Examples: ["gunicorn", "docutils>=0.3", "lxml==0.5a7"]
if os.path.isfile(requirementPath):
with open(requirementPath) as f:
install_requires = f.read().splitlines()
setup(name="yourpackage", install_requires=install_requires, [...])
执行python setup.py install
将安装您的软件包和所有依赖项。就像@jwodder所说的那样,创建requirements.txt
文件不是强制性的,您可以直接在install_requires
脚本中设置setup.py
。但是写一个requirements.txt
文件是一个好习惯。
在设置功能中,您还必须设置version
,packages
,author
等,请阅读文档以获取完整示例:https://docs.python.org/3.7/distutils/setupscript.html
您的软件包目录将如下所示:
├── yourpackage
│ ├── yourpackage
│ │ ├── __init__.py
│ │ └── yourmodule.py
│ ├── requirements.txt
│ └── setup.py
答案 1 :(得分:2)
另一种可能的解决方案
try:
# for pip >= 10
from pip._internal.req import parse_requirements
except ImportError:
# for pip <= 9.0.3
from pip.req import parse_requirements
def load_requirements(fname):
reqs = parse_requirements(fname, session="test")
return [str(ir.req) for ir in reqs]
setup(name="yourpackage", install_requires=load_requirements("requirements.txt"))