Skip to main content
 首页 » 编程设计

python之强制 setuptools 使用 dependency_links 安装 mysqlclient

2024年10月24日24sharpest

我使用的是 Windows,我需要从 here 安装 WHL 文件.这是我在 setup.py 中的内容:

install_requires=['mysqlclient==1.3.7', 
... 
dependency_links=['https://pypi.python.org/packages/cp27/m/mysqlclient/mysqlclient-1.3.7-cp27-none-win32.whl#md5=e9e726fd6f1912af78e2bf6ab56c02f3',] 

但是,setuptools 正在下载 tar.gz 文件并尝试构建,这在我的系统上不起作用。我关注了this solution并更改了我的 install_requires使用 mysqlclient<=1.3.7 ,但我仍然遇到同样的问题。这是输出:

Searching for mysqlclient<=1.3.7 
Reading https://pypi.python.org/packages/cp27/P/Pillow/Pillow-2.7.0-cp27-none-win32.whl#md5=ebc4ef88a8dd39ed484206323a8d557a 
Reading https://pypi.python.org/packages/cp27/m/mysqlclient/mysqlclient-1.3.7-cp27-none-win32.whl#md5=e9e726fd6f1912af78e2bf6ab56c02f3 
Reading http://pypi.python.org/simple/mysqlclient/ 
Best match: mysqlclient 1.3.7 
Downloading https://pypi.python.org/packages/source/m/mysqlclient/mysqlclient-1.3.7.tar.gz#md5=2ec5a96cbd9fd6ef343fa9b581a67fc4 
Processing mysqlclient-1.3.7.tar.gz 
Running mysqlclient-1.3.7\setup.py -q bdist_egg --dist-dir c:\users\uuu\appdata\local\temp\easy_install-wt7fkw\mysqlclient-1.3.7\egg-dist-tmp-ubrs4f 
error: Setup script exited with error: Unable to find vcvarsall.bat 

使用 dependency_links 中的链接安装 Pillow 没有任何问题。有没有办法强制 setup.py 使用依赖链接?

请您参考如下方法:

作为安装后的一部分,我最终手动安装了这个包:

from setuptools.command.install import install as _install 
import pip 
 
class install(_install): 
  def run(self): 
    _install.do_egg_install(self) 
 
    # Even when dependeny link to mysqlclient is specified, setuptools still installs 
    # from pypi, which does not work on Windows.  Therefore, manually install mysqlclient 
    if os.name == 'nt': 
      pip.main(['install', 'https://pypi.python.org/packages/cp27/m/mysqlclient/mysqlclient-1.3.7-cp27-none-win32.whl#md5=e9e726fd6f1912af78e2bf6ab56c02f3']) 
    else: 
      pip.main(['install', 'mysqlclient==1.3.7']) 
 
setup( 
      cmdclass={'install': install}, 
... 
) 

有other answers调用 _install.run(),但这对我不起作用。我不得不使用 do_egg_install()。