Как я могу заставить Tox найти локальные колеса для моих зависимостей из dependency_list в моем setup.py

Я пытаюсь использовать tox для своих тестов.

До сих пор это работало отлично, но теперь я пытаюсь добавить зависимость к другому из моих пакетов. Я построил колесо локально и указал ссылку на него в файле dependency_links setup.py, но теперь при запуске tox я получаю следующую ошибку:

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)

Вот мой setup.py:


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

name = "ComponentAssembler-abs"

author = "me me me"

author_email = "[email protected]"

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',
      ]
)

Мое колесо находится здесь, на моей машине: D:\python\graph-it\dist\graph_it-0.1.0-py3-none-any.whl

Что мне не хватает? :D

Спасибо!


person Martin    schedule 01.05.2021    source источник
comment
Отвечает ли это на ваш вопрос? Как включить и установить локальные зависимости в setup.py в Python?   -  person J.G.    schedule 01.05.2021
comment
Спасибо за ссылку, но, к сожалению, нет, она не помогает. Во-первых, потому что в соответствии с этот dependency_links устарел, во-вторых, потому что в предоставленной вами ссылке упоминается egg и предполагает, что он использует уже созданные файлы egg, когда я пытаюсь установить setup.py с помощью локального файла колеса. Однако ваша ссылка также привела меня туда, что гораздо более многообещающе, к сожалению, я не смог заставить его работать до сих пор.   -  person Martin    schedule 01.05.2021
comment
Я должен добавить, что ссылка, которой вы поделились, хорошо работает для установки с использованием python setup.py install, но вызывает ошибку при использовании через tox.   -  person Martin    schedule 01.05.2021


Ответы (1)


Мой совет будет:

  • Избавьтесь от dependency_links, поскольку, как уже упоминалось, он устарел.
  • Не вызывайте python setup.py install, это также устарело. Вместо этого используйте pip install . или pip install --editable ..
  • Используйте параметр pip --find-links, чтобы указать на локальный каталог, содержащий локально собранные колеса: pip install --find-links 'D:\python\graph-it\dist' .
  • Вы также можете добавить строку --find-links 'D:\python\graph-it\dist' в файл requirements.txt. Обратите внимание, что это не портативно. Вместо этого вы можете использовать относительный путь, и, возможно, он немного более переносим.
  • For tox:
person sinoroc    schedule 01.05.2021
comment
Спасибо! pip install --find-links D:\python\graph-it\dist . работает, я также пробовал использовать относительный путь 'pip install --find-links'. .` и это тоже работает. В идеале я хотел бы поместить эту ссылку на зависимость либо в setup.py, либо в требования.txt, чтобы не указывать ее каждый раз, есть идеи, как я могу это сделать? Я пробовал использовать тот же контент requirements.txt, что предложен здесь, и поставил свое колесо рядом с setup.py, но это не сработало, есть идеи, почему? - person Martin; 01.05.2021
comment
Что касается токсикоза, как указано в предоставленной вами ссылке, это помогло install_command = pip install --find-links . {packages}. Опять же, в идеале я хотел бы иметь возможность указать все это в файле requirements.txt или setup.py, если это возможно, чтобы сохранить более последовательный подход без необходимости делать это каждый раз для установки и для tox. Есть идеи? Еще раз спасибо за решение в любом случае :) - person Martin; 01.05.2021
comment
Вы не можете поместить такую ​​вещь в setup.py, раньше это было возможно с dependency_links, но это была плохая идея, и теперь она устарела. -- Вы можете поставить --find-links D:\python\graph-it\dist в requirements.txt. Я не думаю, что это отличная идея, но вы можете, и если это полезно для вас, то сделайте это. - person sinoroc; 01.05.2021