我目前有一个setup.py文件,用于我写过的应用程序。使用setuptools我很容易就能安装pip-available的要求:
install_requires = [
'argparse',
'multiprocessing',
'requests',
'numpy',
'termcolor',
'prettytable'
]
问题是我还需要安装MySQLdb,它不是通过pip安装的。在本地设置时,我不得不下载tarball,解压缩,安装,符号链接等...简而言之,它是一个PITA。
无论如何在我的setup.py
文件中自动执行此操作?而不是下载tarball并将其作为一个包包括在内?即便如此,我如何在自己的setup.py
内运行setup.py
?
答案 0 :(得分:0)
您实际上可以通过pip安装MySQLdb,但该包名为MySQL-python
。
现在,您的用户仍然需要安装软件包的C依赖项(libmysqlclient
),但这可以通过软件包管理器轻松安装。提供非setup.py
安装脚本(例如bash
脚本)来安装相应的系统依赖项(libmysqlclient
)并调用setup.py
也是相当容易的:
#!/bin/bash
apt-get install -y libmysqlclient-dev # Improve me! Check the platform first
python setup.py install
请勿尝试在setup.py
中做太多事情。没有人希望setup.py
脚本安装系统软件包,所以你应该不要在你的软件中安装。{/ p>
现在,如果要求用户安装系统软件包太多(如果他们没有root访问权限,那么就可以),你应该使用纯Python MySQL客户端。
一个这样的客户端是pymysql
,当然可以通过pip安装。