Пакеты, перечисленные в install_requires, игнорируются при установке с помощью pip

Наверное, где-то спросили и ответили, но я много искал и не нашел где. Извините, если дублировал.

У меня есть проект ( https://github.com/PyFPGA/openflow), который зависит от pyyaml:

      setup(
    ...,
    install_requires=['pyyaml']
)

При установке с pip3 install -e .пиямл не устанавливается. Это можно проверить с помощью:

      $ virtualenv venv1 --python=python3
$ venv1/bin/python3 -m pip install -e .

Obtaining file:///home/ram/repos_ram/PyFPGA/openflow
    ERROR: Command errored out with exit status 1:
     command: /home/ram/repos_ram/PyFPGA/openflow/venv1/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/ram/repos_ram/PyFPGA/openflow/setup.py'"'"'; __file__='"'"'/home/ram/repos_ram/PyFPGA/openflow/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-bzc9au74
         cwd: /home/ram/repos_ram/PyFPGA/openflow/
    Complete output (9 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/home/ram/repos_ram/PyFPGA/openflow/setup.py", line 3, in <module>
        import openflow
      File "/home/ram/repos_ram/PyFPGA/openflow/openflow/__init__.py", line 6, in <module>
        from openflow.configure import ConfigureTools
      File "/home/ram/repos_ram/PyFPGA/openflow/openflow/configure.py", line 25, in <module>
        from yaml import safe_load, dump
    ImportError: No module named 'yaml'
    ----------------------------------------
WARNING: Discarding file:///home/ram/repos_ram/PyFPGA/openflow. Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ram@ram-notebook2:~/repos_ram/PyFPGA/openflow$ 
ram@ram-notebook2:~/repos_ram/PyFPGA/openflow$ 
ram@ram-notebook2:~/repos_ram/PyFPGA/openflow$ venv1/bin/python3 -m pip install -e .
DEPRECATION: Python 3.5 reached the end of its life on September 13th, 2020. Please upgrade your Python as Python 3.5 is no longer maintained. pip 21.0 will drop support for Python 3.5 in January 2021. pip 21.0 will remove support for this functionality.
Obtaining file:///home/ram/repos_ram/PyFPGA/openflow
    ERROR: Command errored out with exit status 1:
     command: /home/ram/repos_ram/PyFPGA/openflow/venv1/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/ram/repos_ram/PyFPGA/openflow/setup.py'"'"'; __file__='"'"'/home/ram/repos_ram/PyFPGA/openflow/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-0r0b115b
         cwd: /home/ram/repos_ram/PyFPGA/openflow/
    Complete output (9 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/home/ram/repos_ram/PyFPGA/openflow/setup.py", line 3, in <module>
        import openflow
      File "/home/ram/repos_ram/PyFPGA/openflow/openflow/__init__.py", line 6, in <module>
        from openflow.configure import ConfigureTools
      File "/home/ram/repos_ram/PyFPGA/openflow/openflow/configure.py", line 25, in <module>
        from yaml import safe_load, dump
    ImportError: No module named 'yaml'
    ----------------------------------------
WARNING: Discarding file:///home/ram/repos_ram/PyFPGA/openflow. Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

Он не работает на моем компьютере (я знаю, что python3.5 устарел), но также и в действиях GitHub ( https://github.com/PyFPGA/openflow/pull/7/checks?check_run_id=2171303843 ) с использованием ubuntu-latest (с Python 3.6, 3.7, 3.8 и 3.9).

Я не хочу обходного пути. Я это понимаю install_requires- это метод указания обязательных зависимостей. Я не прав?

Заранее спасибо Родриго

1 ответ

Я решил свою проблему. Это не было связано с install_requires. Чтобы прочитать версию своего проекта, я импортировал файл, который импортирует yaml (который еще не установлен). Итак, я избегал импорта своей библиотеки в setup.py.

Другие вопросы по тегам