Skip to content

serverless-python-requirements is pulling down non required packages #626

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
samsebree opened this issue Aug 4, 2021 · 0 comments
Open

Comments

@samsebree
Copy link

Running with the following:

serverless version 2.52.1
serverless-python-requirements version 5.1.1
python3.8
running with dockerizePip enabled

When running sls deploy, serverless-python-requirements is pulling in packages that are not required by the project. In particular, it is pulling in a 209mb copy of PyQt5 which is not needed.

This occurs when I change the package version of one of my required libraries in my requirements.txt folder. Initially I just figured that meant they developed a dependency on PyQt5. However I have confirmed directly with the developer of the package that they do not have a dependency on PyQt5. I have also confirmed this locally by running pipdeptree.

Here is the pipdeptree for my project:

Warning!!! Possibly conflicting dependencies found:

  • aiohttp==3.6.3
  • chardet [required: >=2.0,<4.0, installed: 4.0.0]
  • botocore==1.19.2
  • urllib3 [required: >=1.25.4,<1.26, installed: 1.26.4]

-rllib3==1.26.2
aiohttp==3.6.3

  • async-timeout [required: >=3.0,<4.0, installed: 3.0.1]
  • attrs [required: >=17.3.0, installed: 20.2.0]
  • chardet [required: >=2.0,<4.0, installed: 4.0.0]
  • multidict [required: >=4.5,<5.0, installed: 4.7.6]
  • yarl [required: >=1.0,<1.6.0, installed: 1.5.1]
    • idna [required: >=2.0, installed: 2.10]
    • multidict [required: >=4.0, installed: 4.7.6]
      boto3==1.16.2
  • botocore [required: >=1.19.2,<1.20.0, installed: 1.19.2]
    • jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
    • python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
      • six [required: >=1.5, installed: 1.15.0]
    • urllib3 [required: >=1.25.4,<1.26, installed: 1.26.4]
  • jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
  • s3transfer [required: >=0.3.0,<0.4.0, installed: 0.3.3]
    • botocore [required: >=1.12.36,<2.0a.0, installed: 1.19.2]
      • jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
      • python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
        • six [required: >=1.5, installed: 1.15.0]
      • urllib3 [required: >=1.25.4,<1.26, installed: 1.26.4]
        DateTime==4.3
  • pytz [required: Any, installed: 2020.1]
  • zope.interface [required: Any, installed: 5.1.2]
    • setuptools [required: Any, installed: 50.3.0]
      facebook-scraper==0.2.45
  • dateparser [required: >=1.0.0,<2.0.0, installed: 1.0.0]
    • python-dateutil [required: Any, installed: 2.8.1]
      • six [required: >=1.5, installed: 1.15.0]
    • pytz [required: Any, installed: 2020.1]
    • regex [required: !=2019.02.19, installed: 2020.11.13]
    • tzlocal [required: Any, installed: 2.1]
      • pytz [required: Any, installed: 2020.1]
  • demjson [required: >=2.2.4,<3.0.0, installed: 2.2.4]
  • requests-html [required: >=0.10.0,<0.11.0, installed: 0.10.0]
    • bs4 [required: Any, installed: 0.0.1]
      • beautifulsoup4 [required: Any, installed: 4.9.3]
        • soupsieve [required: >1.2, installed: 2.0.1]
    • fake-useragent [required: Any, installed: 0.1.11]
    • parse [required: Any, installed: 1.18.0]
    • pyppeteer [required: >=0.0.14, installed: 0.2.2]
      • appdirs [required: >=1.4.3,<2.0.0, installed: 1.4.4]
      • pyee [required: >=7.0.1,<8.0.0, installed: 7.0.4]
      • tqdm [required: >=4.42.1,<5.0.0, installed: 4.50.2]
      • urllib3 [required: >=1.25.8,<2.0.0, installed: 1.26.4]
      • websockets [required: >=8.1,<9.0, installed: 8.1]
    • pyquery [required: Any, installed: 1.4.1]
      • cssselect [required: >0.7.9, installed: 1.1.0]
      • lxml [required: >=2.1, installed: 4.6.1]
    • requests [required: Any, installed: 2.25.1]
      • certifi [required: >=2017.4.17, installed: 2020.12.5]
      • chardet [required: >=3.0.2,<5, installed: 4.0.0]
      • idna [required: >=2.5,<3, installed: 2.10]
      • urllib3 [required: >=1.21.1,<1.27, installed: 1.26.4]
    • w3lib [required: Any, installed: 1.22.0]
      • six [required: >=1.4.1, installed: 1.15.0]
        Flask==1.1.2
  • click [required: >=5.1, installed: 6.7]
  • itsdangerous [required: >=0.24, installed: 0.24]
  • Jinja2 [required: >=2.10.1, installed: 2.11.2]
    • MarkupSafe [required: >=0.23, installed: 0.23]
  • Werkzeug [required: >=0.15, installed: 1.0.1]
    html2text==2020.1.16
    nulltype==2.3.1
    pipdeptree==2.0.0
  • pip [required: >=6.0.0, installed: 20.2.4]
    plaid-python==6.1.0
  • requests [required: >=2.7.0, installed: 2.25.1]
    • certifi [required: >=2017.4.17, installed: 2020.12.5]
    • chardet [required: >=3.0.2,<5, installed: 4.0.0]
    • idna [required: >=2.5,<3, installed: 2.10]
    • urllib3 [required: >=1.21.1,<1.27, installed: 1.26.4]
      py3-pinterest==1.1.2
  • beautifulsoup4 [required: Any, installed: 4.9.3]
    • soupsieve [required: >1.2, installed: 2.0.1]
  • requests [required: Any, installed: 2.25.1]
    • certifi [required: >=2017.4.17, installed: 2020.12.5]
    • chardet [required: >=3.0.2,<5, installed: 4.0.0]
    • idna [required: >=2.5,<3, installed: 2.10]
    • urllib3 [required: >=1.21.1,<1.27, installed: 1.26.4]
  • requests-toolbelt [required: Any, installed: 0.9.1]
    • requests [required: >=2.0.1,<3.0.0, installed: 2.25.1]
      • certifi [required: >=2017.4.17, installed: 2020.12.5]
      • chardet [required: >=3.0.2,<5, installed: 4.0.0]
      • idna [required: >=2.5,<3, installed: 2.10]
      • urllib3 [required: >=1.21.1,<1.27, installed: 1.26.4]
        pylint==2.6.0
  • astroid [required: >=2.4.0,<=2.5, installed: 2.4.2]
    • lazy-object-proxy [required: ==1.4.*, installed: 1.4.3]
    • six [required: ~=1.12, installed: 1.15.0]
    • wrapt [required: ~=1.11, installed: 1.12.1]
  • isort [required: >=4.2.5,<6, installed: 5.6.4]
  • mccabe [required: >=0.6,<0.7, installed: 0.6.1]
  • toml [required: >=0.7.1, installed: 0.10.1]
    python-dotenv==0.15.0
    selenium==3.141.0
  • urllib3 [required: Any, installed: 1.26.4]
    twitter-scraper==0.4.4
  • MechanicalSoup [required: Any, installed: 0.12.0]
    • beautifulsoup4 [required: >=4.4, installed: 4.9.3]
      • soupsieve [required: >1.2, installed: 2.0.1]
    • lxml [required: Any, installed: 4.6.1]
    • requests [required: >=2.0, installed: 2.25.1]
      • certifi [required: >=2017.4.17, installed: 2020.12.5]
      • chardet [required: >=3.0.2,<5, installed: 4.0.0]
      • idna [required: >=2.5,<3, installed: 2.10]
      • urllib3 [required: >=1.21.1,<1.27, installed: 1.26.4]
    • six [required: >=1.4, installed: 1.15.0]
  • requests-html [required: Any, installed: 0.10.0]
    • bs4 [required: Any, installed: 0.0.1]
      • beautifulsoup4 [required: Any, installed: 4.9.3]
        • soupsieve [required: >1.2, installed: 2.0.1]
    • fake-useragent [required: Any, installed: 0.1.11]
    • parse [required: Any, installed: 1.18.0]
    • pyppeteer [required: >=0.0.14, installed: 0.2.2]
      • appdirs [required: >=1.4.3,<2.0.0, installed: 1.4.4]
      • pyee [required: >=7.0.1,<8.0.0, installed: 7.0.4]
      • tqdm [required: >=4.42.1,<5.0.0, installed: 4.50.2]
      • urllib3 [required: >=1.25.8,<2.0.0, installed: 1.26.4]
      • websockets [required: >=8.1,<9.0, installed: 8.1]
    • pyquery [required: Any, installed: 1.4.1]
      • cssselect [required: >0.7.9, installed: 1.1.0]
      • lxml [required: >=2.1, installed: 4.6.1]
    • requests [required: Any, installed: 2.25.1]
      • certifi [required: >=2017.4.17, installed: 2020.12.5]
      • chardet [required: >=3.0.2,<5, installed: 4.0.0]
      • idna [required: >=2.5,<3, installed: 2.10]
      • urllib3 [required: >=1.21.1,<1.27, installed: 1.26.4]
    • w3lib [required: Any, installed: 1.22.0]
      • six [required: >=1.4.1, installed: 1.15.0]
        unicode==2.8
        webdriver-manager==3.4.1
  • configparser [required: Any, installed: 5.0.2]
  • crayons [required: Any, installed: 0.4.0]
    • colorama [required: Any, installed: 0.4.4]
  • requests [required: Any, installed: 2.25.1]
    • certifi [required: >=2017.4.17, installed: 2020.12.5]
    • chardet [required: >=3.0.2,<5, installed: 4.0.0]
    • idna [required: >=2.5,<3, installed: 2.10]
    • urllib3 [required: >=1.21.1,<1.27, installed: 1.26.4]
      wheel==0.35.1

Here is the contents of my requirements, generated by sls package:
CHANGES.md
DateTime
DateTime-4.3.dist-info
LICENSE
MechanicalSoup-1.1.0.dist-info
PyQt5
PyQt5-5.15.4.dist-info
PyQt5_Qt5-5.15.2.dist-info
PyQt5_sip-12.9.0.dist-info
README.md
pycache
_distutils_hack
aiohttp
aiohttp-3.7.4.post0.dist-info
appdirs-1.4.4.dist-info
appdirs.py
async_timeout
async_timeout-3.0.1.dist-info
attr
attrs-21.2.0.dist-info
backports
beautifulsoup4-4.9.3.dist-info
bin
boto3
boto3-1.18.13.dist-info
botocore
botocore-1.21.13.dist-info
bs4
bs4-0.0.1.dist-info
certifi
certifi-2021.5.30.dist-info
chardet
chardet-4.0.0.dist-info
charset_normalizer
charset_normalizer-2.0.4.dist-info
colorama
colorama-0.4.4.dist-info
configparser-5.0.2.dist-info
configparser.py
crayons-0.4.0.dist-info
crayons.py
cssselect
cssselect-1.1.0.dist-info
dateparser
dateparser-1.0.0.dist-info
dateparser_data
dateparser_scripts
dateutil
demjson-2.2.4.dist-info
demjson.py
distutils-precedence.pth
facebook_scraper
facebook_scraper-0.2.45.dist-info
fake_useragent
fake_useragent-0.1.11.dist-info
idna
idna-3.2.dist-info
jmespath
jmespath-0.10.0.dist-info
lxml
lxml-4.6.3.dist-info
mechanicalsoup
multidict
multidict-5.1.0.dist-info
parse-1.19.0.dist-info
parse.py
pkg_resources
plaid
plaid_python-7.4.0.dist-info
py3_pinterest-1.2.2.dist-info
py3pin
pyee
pyee-8.1.0.dist-info
pyppeteer
pyppeteer-0.2.5.dist-info
pyquery
pyquery-1.4.3.dist-info
python_dateutil-2.8.2.dist-info
pytz
pytz-2021.1.dist-info
regex
regex-2021.8.3.dist-info
requests
requests-2.26.0.dist-info
requests_html-0.10.0.dist-info
requests_html.py
requests_toolbelt
requests_toolbelt-0.9.1.dist-info
requirements 2.txt
requirements.txt
s3transfer
s3transfer-0.5.0.dist-info
selenium
selenium-3.141.0.dist-info
setuptools
setuptools-57.4.0.dist-info
six-1.16.0.dist-info
six.py
soupsieve
soupsieve-2.2.1.dist-info
tests
tqdm
tqdm-4.62.0.dist-info
twitter_scraper
twitter_scraper-0.4.4.dist-info
typing_extensions-3.10.0.0.dist-info
typing_extensions.py
tzlocal
tzlocal-2.1.dist-info
urllib3
urllib3-1.26.6.dist-info
w3lib
w3lib-1.22.0.dist-info
webdriver_manager
webdriver_manager-3.4.2.dist-info
websockets
websockets-8.1.dist-info
yarl
yarl-1.6.3.dist-info
zope
zope.interface-5.4.0-py3.8-nspkg.pth
zope.interface-5.4.0.dist-info

The package in question which seems to cause PyQt5 to get pulled in is facebook-scraper.
When I set the requirements.txt version to 0.2.10 as it originally was, it doesn't pull in PyQt5.

However it appears if I change it to literally any other version, such as a previous version (0.2.9) or the latest version (0.2.45), PyQt5 gets pulled in despite absolutely not existing in the pipdeptree.

Any advice would be greatly appreciated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant