= 2010-10-29 = == Python == * 需求:怎麼產生 pip package 的相依關係圖呢? * 解法:https://pypi.org/project/pipdeptree/ * 安裝: {{{ #sh ~$ sudo pip3 install pipdeptree }}} * 產生相依圖: {{{ #!graphviz digraph { xlrd [label="xlrd 1.2.0"] wrapt [label="wrapt 1.11.2"] wheel [label="wheel 0.33.4"] Werkzeug [label="Werkzeug 0.16.0"] webweb [label="webweb 0.0.37"] webweb -> numpy [label=">=1.16.3"] wcwidth [label="wcwidth 0.1.7"] urllib3 [label="urllib3 1.25.6"] "typed-ast" [label="typed-ast 1.4.0"] traitlets [label="traitlets 4.3.3"] traitlets -> decorator [label=any] traitlets -> six [label=any] traitlets -> "ipython-genutils" [label=any] "text-unidecode" [label="text-unidecode 1.3"] SQLAlchemy [label="SQLAlchemy 1.3.10"] soupsieve [label="soupsieve 1.9.4"] setuptools [label="setuptools 41.0.1"] selenium [label="selenium 3.141.0"] selenium -> urllib3 [label=any] "selenium-wire" [label="selenium-wire 1.0.10"] "selenium-wire" -> selenium [label=">=3.4.0"] retrying [label="retrying 1.3.3"] retrying -> six [label=">=1.7.0"] pytz [label="pytz 2019.3"] pytimeparse [label="pytimeparse 1.1.8"] "python-slugify" [label="python-slugify 3.0.6"] "python-slugify" -> "text-unidecode" [label=">=1.3"] "python-dateutil" [label="python-dateutil 2.8.0"] "python-dateutil" -> six [label=">=1.5"] pyparsing [label="pyparsing 2.4.2"] pylint [label="pylint 2.4.2"] pylint -> mccabe [label=">=0.6,<0.7"] pylint -> isort [label=">=4.2.5,<5"] pylint -> astroid [label=">=2.3.0,<2.4"] Pygments [label="Pygments 2.4.2"] ptyprocess [label="ptyprocess 0.6.0"] "prompt-toolkit" [label="prompt-toolkit 2.0.10"] "prompt-toolkit" -> wcwidth [label=any] "prompt-toolkit" -> six [label=">=1.9.0"] plotly [label="plotly 4.2.1"] plotly -> six [label=any] plotly -> retrying [label=">=1.3.3"] pipdeptree [label="pipdeptree 0.13.2"] pipdeptree -> pip [label=">=6.0.0"] pip [label="pip 19.1.1"] pickleshare [label="pickleshare 0.7.5"] pexpect [label="pexpect 4.7.0"] pexpect -> ptyprocess [label=">=0.5"] parso [label="parso 0.5.1"] parsedatetime [label="parsedatetime 2.4"] parsedatetime -> future [label=any] pandas [label="pandas 0.25.2"] pandas -> numpy [label=">=1.13.3"] pandas -> "python-dateutil" [label=">=2.6.1"] pandas -> pytz [label=">=2017.2"] openpyxl [label="openpyxl 3.0.0"] openpyxl -> "et-xmlfile" [label=any] openpyxl -> jdcal [label=any] numpy [label="numpy 1.17.3"] networkx [label="networkx 2.4"] networkx -> decorator [label=">=4.3.0"] mccabe [label="mccabe 0.6.1"] matplotlib [label="matplotlib 3.1.1"] matplotlib -> pyparsing [label=">=2.0.1,!=2.1.6,!=2.1.2,!=2.0.4"] matplotlib -> kiwisolver [label=">=1.0.1"] matplotlib -> numpy [label=">=1.11"] matplotlib -> "python-dateutil" [label=">=2.1"] matplotlib -> cycler [label=">=0.10"] MarkupSafe [label="MarkupSafe 1.1.1"] lxml [label="lxml 4.4.1"] leather [label="leather 0.3.3"] leather -> six [label=">=1.6.1"] "lazy-object-proxy" [label="lazy-object-proxy 1.4.2"] kiwisolver [label="kiwisolver 1.1.0"] kiwisolver -> setuptools [label=any] Jinja2 [label="Jinja2 2.10.3"] Jinja2 -> MarkupSafe [label=">=0.23"] jedi [label="jedi 0.15.1"] jedi -> parso [label=">=0.5.0"] jdcal [label="jdcal 1.4.1"] itsdangerous [label="itsdangerous 1.1.0"] isort [label="isort 4.3.21"] isodate [label="isodate 0.6.0"] isodate -> six [label=any] ipython [label="ipython 7.8.0"] ipython -> decorator [label=any] ipython -> pickleshare [label=any] ipython -> setuptools [label=">=18.5"] ipython -> pygments [label=any] ipython -> backcall [label=any] ipython -> traitlets [label=">=4.2"] ipython -> pexpect [label=any] ipython -> jedi [label=">=0.10"] ipython -> "prompt-toolkit" [label=">=2.0.0,<2.1.0"] ipython -> appnope [label=any] "ipython-genutils" [label="ipython-genutils 0.2.0"] graphviz [label="graphviz 0.13"] future [label="future 0.18.0"] Flask [label="Flask 1.1.1"] Flask -> itsdangerous [label=">=0.24"] Flask -> Werkzeug [label=">=0.15"] Flask -> Jinja2 [label=">=2.10.1"] Flask -> click [label=">=5.1"] "Flask-Compress" [label="Flask-Compress 1.4.0"] "Flask-Compress" -> Flask [label=any] "et-xmlfile" [label="et-xmlfile 1.0.1"] decorator [label="decorator 4.4.0"] dbfread [label="dbfread 2.0.7"] dash [label="dash 1.4.1"] dash -> "dash-table" [label="==4.4.1"] dash -> plotly [label=any] dash -> "flask-compress" [label=any] dash -> "dash-core-components" [label="==1.3.1"] dash -> "dash-html-components" [label="==1.0.1"] dash -> "dash-renderer" [label="==1.1.2"] dash -> Flask [label=">=1.0.2"] dash -> future [label=any] "dash-table" [label="dash-table 4.4.1"] "dash-renderer" [label="dash-renderer 1.1.2"] "dash-html-components" [label="dash-html-components 1.0.1"] "dash-daq" [label="dash-daq 0.2.1"] "dash-daq" -> dash [label=">=1.0.0"] "dash-core-components" [label="dash-core-components 1.3.1"] cycler [label="cycler 0.10.0"] cycler -> six [label=any] csvkit [label="csvkit 1.0.4"] csvkit -> six [label=">=1.6.1"] csvkit -> "agate-sql" [label=">=0.5.3"] csvkit -> "agate-excel" [label=">=0.2.2"] csvkit -> agate [label=">=1.6.1"] csvkit -> "agate-dbf" [label=">=0.2.0"] Click [label="Click 7.0"] bs4 [label="bs4 0.0.1"] bs4 -> beautifulsoup4 [label=any] beautifulsoup4 [label="beautifulsoup4 4.8.1"] beautifulsoup4 -> soupsieve [label=">=1.2"] backcall [label="backcall 0.1.0"] Babel [label="Babel 2.7.0"] Babel -> pytz [label=">=2015.7"] astroid [label="astroid 2.3.1"] astroid -> six [label="==1.12"] astroid -> "lazy-object-proxy" [label="==1.4.*"] astroid -> "typed-ast" [label=">=1.4.0,<1.5"] astroid -> wrapt [label="==1.11.*"] appnope [label="appnope 0.1.0"] agate [label="agate 1.6.1"] agate -> Babel [label=">=2.0"] agate -> six [label=">=1.9.0"] agate -> isodate [label=">=0.5.4"] agate -> "python-slugify" [label=">=1.2.1"] agate -> pytimeparse [label=">=1.1.5"] agate -> parsedatetime [label=">=2.1"] agate -> leather [label=">=0.3.2"] "agate-sql" [label="agate-sql 0.5.4"] "agate-sql" -> sqlalchemy [label=">=1.0.8"] "agate-sql" -> agate [label=">=1.5.0"] "agate-excel" [label="agate-excel 0.2.3"] "agate-excel" -> xlrd [label=">=0.9.4"] "agate-excel" -> openpyxl [label=">=2.3.0"] "agate-excel" -> agate [label=">=1.5.0"] "agate-dbf" [label="agate-dbf 0.2.1"] "agate-dbf" -> dbfread [label=">=2.0.5"] "agate-dbf" -> agate [label=">=1.5.0"] six [label="six 1.12.0"] protobuf [label="protobuf 3.10.0"] protobuf -> six [label=">=1.9"] protobuf -> setuptools [label=any] } }}}