pip install dependency links

后端 未结 4 1953
花落未央
花落未央 2020-11-29 08:25

I am using python version 2.7 and pip version is 1.5.6.

I want to install extra libraries from url like a git repo on setup.py is being in

4条回答
  •  醉话见心
    2020-11-29 09:02

    I faced a similar situation where I want to use shapely as one of my package dependency. Shapely, however, has a caveat that if you are using windows, you have to use the .whl file from http://www.lfd.uci.edu/~gohlke/pythonlibs/. Otherwise, you have to install a C compiler, which is something I don't want. I want the user to simply use pip install mypackage instead of installing a bunch of other stuffs.

    And if you have the typical setup with dependency_links

    setup(
      name = 'streettraffic',
      packages = find_packages(), # this must be the same as the name above
      version = '0.1',
      description = 'A random test lib',
      author = 'Costa Huang',
      author_email = 'Costa.Huang@outlook.com',
      install_requires=['Shapely==1.5.17'],
      dependency_links = ['http://www.lfd.uci.edu/~gohlke/pythonlibs/ru4fxw3r/Shapely-1.5.17-cp36-cp36m-win_amd64.whl']
    )
    

    and run pip install ., it is simply going to pick the shapely on Pypi and cause trouble on Windows installation. After hours of researching, I found this link Force setuptools to use dependency_links to install mysqlclient and basically use from setuptools.command.install import install as _install to manually install shapely.

    from setuptools.command.install import install as _install
    from setuptools import setup, find_packages
    import pip
    
    class install(_install):
      def run(self):
        _install.do_egg_install(self)
    
        # just go ahead and do it
        pip.main(['install', 'http://localhost:81/Shapely-1.5.17-cp36-cp36m-win_amd64.whl'])
    
    setup(
      name = 'mypackage',
      packages = find_packages(), # this must be the same as the name above
      version = '0.1',
      description = 'A random test lib',
      author = 'Costa Huang',
      author_email = 'test@outlook.com',
      cmdclass={'install': install}
    )
    

    And the script works out nicely. Hope it helps.

提交回复
热议问题