Файл python3 requirements.txt показывает нежелательные пакеты

Я создал виртуальную среду, используя: python3 -m venv . Затем я использовал команду pip freeze requirements.txt, чтобы получить список пакетов.

Ниже представлено содержимое файла requirements.txt

apsw==3.16.2.post1
asn1crypto==0.24.0
beautifulsoup4==4.6.0
chardet==3.0.4
CherryPy==8.9.1
configparser==3.5.0
cryptography==2.1.4
cssselect==1.0.3
cssutils==1.0.2
dnspython==1.15.0
enum34==1.1.6
feedparser==5.2.1
flake8==3.5.0
html5-parser==0.4.4
html5lib==0.999999999
idna==2.6
ipaddress==1.0.17
jedi==0.11.1
keyring==10.6.0
keyrings.alt==3.0
lxml==4.2.1
Markdown==2.6.9
mccabe==0.6.1
mechanize==0.2.5
msgpack==0.5.6
mysql-connector-python==8.0.6
mysql-utilities==1.6.4
netifaces==0.10.4
numpy==1.14.5
olefile==0.45.1
paramiko==2.0.0
parso==0.1.1
pep8==1.7.1
pexpect==4.2.1
Pillow==5.1.0
pyasn1==0.4.2
pycodestyle==2.3.1
pycrypto==2.6.1
pyflakes==1.6.0
Pygments==2.2.0
pygobject==3.26.1
pyodbc==4.0.17
pyOpenSSL==17.5.0
pyparsing==2.2.0
pysqlite==2.7.0
python-dateutil==2.6.1
pyxdg==0.25
PyYAML==3.12
regex==2017.12.12
repoze.lru==0.7
Routes==2.4.1
SecretStorage==2.3.1
simplejson==3.13.2
six==1.11.0
unity-lens-photos==1.0
uTidylib==0.3
virtualenv==15.2.0
webencodings==0.5
WebOb==1.7.3

Я не уверен, какие пакеты необходимы для проекта. Большая часть пакетов не требуется для проекта. Почему в файле requirements.txt отображается так много пакетов? Как это исправить, чтобы в файле requirements.txt отображался список пакетов, необходимых для конкретного проекта? (Я мог бы удалить их вручную, но почему они вообще отображаются в файле requirements.txt?)

Примечание. Раньше я устанавливал пакеты с помощью sudo apt-get install python3-package-name. Вызвало ли это постоянную установку пакетов и их дублирование в виртуальной среде, созданной с помощью python -m venv .? Или это обязательные пакеты по умолчанию?

ОС: ubuntu 18.04, версия python: 3.6.5, версия pip: 9.0.1


person Hemal Mamtora    schedule 14.07.2018    source источник
comment
pip freeze просто выводит список всех пакетов, установленных в текущей виртуальной среде (или общесистемной, если виртуальная среда не активна). Здесь нет ни магии, ни умного поведения.   -  person spectras    schedule 14.07.2018


Ответы (2)


мы можем перечислить только локально установленные пакеты, используя аргумент '-l'. $ pip freeze -l

Ссылка: https://pip.pypa.io/en/stable/reference/pip_freeze/

person Sai Kishore    schedule 05.09.2020

Это типичная проблема с использованием pip и requirements.txt для управления вашими пакетами. В новом проекте Pipenv эта проблема решена путем создания "файла блокировки", содержащего все зависимости пакеты, которые вы фактически используете с точки зрения разработки. Это часто встречается в менеджерах пакетов из других языков, таких как Bundler и npm.

Итак, я предлагаю перейти на Pipenv, если этот файл requirements.txt станет слишком сложным для управления.

person nnyby    schedule 30.08.2018