Next: Perl模块, Previous: Emacs Packages, Up: 打包指导 [Contents][Index]
我们目前为Python 2和Python 3打包,如版本号的规则所述,它们的Scheme变量名分别是python-2
和python
。为了避免和其他编程语言的冲突,Python模块的软件包名字最好含有python
。
Some modules are compatible with only one version of Python, others with
both. If the package Foo is compiled with Python 3, we name it
python-foo
. If it is compiled with Python 2, we name it
python2-foo
. Packages should be added when they are necessary; we
don’t add Python 2 variants of the package unless we are going to use them.
如果一个项目的名字已经含有python
这个单词,我们把它丢掉;例如,python-dateutil模块打包后的名字是python-dateutil
和python2-dateutil
。如果项目的名字以py
开头(如
pytz
),我们把它保留,并且添加上面所述的前缀。
Python软件包的依赖信息通常在包的源代码树里,各种文件有不同的精确度:setup.py文件,requirements.txt文件,tox.ini文件。
你在写软件包配方时的任务是把这些依赖转换成相应的“输入”(see inputs)。尽管pypi
导入工具通常可以做得很好(see 调用guix import),你可能想检查下面这个清单,以决定每个依赖放在哪儿。
setuptools
和pip
。所以你不需要把它们两个指定为依赖,否则guix
lint
会警告你。
propagated-inputs
。它们通常由setup.py文件里的install_requires
关键字或requirements.txt文件定义。
setup_requires
关键字列举的包–或仅在测试时依赖的包–如,tests_require
里的包–要放进native-inputs
。因为,(1)在运行时不需要它们,因此不需要propagate,并且(2)在交叉编译时,它们属于“native”输入。
例如pytest
,mock
,nose
测试框架。当然,如果在运行时需要这里的任何一个包,它需要被加进propagated-inputs
。
inputs
,如,构建含有C语言扩展的Python包所需的程序和C语言库。
extras_require
),由你根据它们的性价比(用处/负担)决定是否添加它们(see guix size
)。