2016-04-20 3 views
2

Я использую Windows, и мне нужно установить WHL-файл с here. Вот что я имею в setup.py:Force setuptools для использования dependency_links для установки mysqlclient

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. Есть ли способ заставить setup.py использовать ссылку зависимости?

+0

Вы нашли решение этого? – dtracers

+0

Да, см. Мой ответ. – user2233706

ответ

2

Я закончил вручную установить пакет как часть поста установки:

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().

 Смежные вопросы

  • Нет связанных вопросов^_^