Search code examples
pythondependenciessetup.pypython-wheeltox

How can I get Tox to find the local wheels to my dependencies from dependency_list in my setup.py


I'm trying to use tox for my tests.

So far it worked great, but now I'm trying to add a dependency to another of my packages. I have build a wheel locally and specified the link to it in the setup.py dependency_links, but now when running tox I get the following error :

Collecting PySide2
  Using cached https://files.pythonhosted.org/packages/48/84/b776c8811dd453eb023b5dd05554e0292d5919fdbb881f3c613f57f5cbe2/PySide2-5.15.2-5.15.2-cp35.cp36.cp37.cp38.cp39-none-win32.whl
Collecting Qt.py>=1.2
  Using cached https://files.pythonhosted.org/packages/cf/08/04c51fb1ee9bbfb2196c956f8a3f7da4e9757710582e8700bf812f258d43/Qt.py-1.3.3-py2.py3-none-any.whl
Collecting pytest-cov
  Using cached https://files.pythonhosted.org/packages/e3/1a/6affecd2344efee7f2487fac82242474cbac09f9e04929da5944907baf11/pytest_cov-2.11.1-py2.py3-none-any.whl
ERROR: Could not find a version that satisfies the requirement graph-it (from ComponentAssembler-abs==0.0.1) (from versions: none)
ERROR: No matching distribution found for graph-it (from ComponentAssembler-abs==0.0.1)

Here's my setup.py :


with open("README.md", "r") as fh:
    long_description = fh.read()

name = "ComponentAssembler-abs"

author = "me me me"

author_email = "me@somemail.com"

description = "Acyclic Block System"

url = "https://github.com/me me me/ComponentAssembler"

python_requires = '>=3.6, <4'


setup(
      name=name,
      version="0.0.1",
      author=author,
      author_email=author_email,
      description=description,
      long_description=long_description,
      url=url,
      package_dir={'': 'src'},
      packages=find_packages(where='src'),
      classifiers=[
            "Programming Language :: Python :: 3",
            "Operating System :: OS Independent",
      ],
      python_requires=python_requires,
      install_requires=[
          'PySide2',
          'Qt.py>=1.2',
          'pytest-cov',
          'graph-it',
      ],
      dependency_links=[
          'D:\\python\\graph-it\\dist',
      ]
)

My wheel is located here on my machine : D:\python\graph-it\dist\graph_it-0.1.0-py3-none-any.whl

What am I missing? :D

Thanks!


Solution

  • My advice would be:

    • Get rid of dependency_links, since as already mentioned, it is deprecated.
    • Do not call python setup.py install, it is also deprecated. Use pip install . or pip install --editable . instead.
    • Use pip's --find-links option to point to the local directory containing the locally built wheels: pip install --find-links 'D:\python\graph-it\dist' .
    • You can also add a line --find-links 'D:\python\graph-it\dist' to a requirements.txt file. Note that this is not portable. You could use a relative path instead, and maybe it is a bit more portable.
    • For tox:
      • You could try to call tox with a pip environment variable, like this: PIP_FIND_LINKS='D:\python\graph-it\dist' tox
      • You could put the path to the wheel file in the deps of tox.ini: deps = graph-it @ D:\python\graph-it\dist\graph_it-0.1.0-py3-none-any.whl.
      • Here is a tox example showing how to use pip's find-links in tox.