| | 1 | = 2010-10-29 = |
| | 2 | |
| | 3 | == Python == |
| | 4 | |
| | 5 | * 需求:怎麼產生 pip package 的相依關係圖呢? |
| | 6 | * 解法:https://pypi.org/project/pipdeptree/ |
| | 7 | * 安裝: |
| | 8 | {{{sh |
| | 9 | ~$ sudo pip3 install pipdeptree |
| | 10 | }}} |
| | 11 | * 產生相依圖: |
| | 12 | {{{ |
| | 13 | #!graphviz |
| | 14 | digraph { |
| | 15 | xlrd [label="xlrd |
| | 16 | 1.2.0"] |
| | 17 | wrapt [label="wrapt |
| | 18 | 1.11.2"] |
| | 19 | wheel [label="wheel |
| | 20 | 0.33.4"] |
| | 21 | Werkzeug [label="Werkzeug |
| | 22 | 0.16.0"] |
| | 23 | webweb [label="webweb |
| | 24 | 0.0.37"] |
| | 25 | webweb -> numpy [label=">=1.16.3"] |
| | 26 | wcwidth [label="wcwidth |
| | 27 | 0.1.7"] |
| | 28 | urllib3 [label="urllib3 |
| | 29 | 1.25.6"] |
| | 30 | "typed-ast" [label="typed-ast |
| | 31 | 1.4.0"] |
| | 32 | traitlets [label="traitlets |
| | 33 | 4.3.3"] |
| | 34 | traitlets -> decorator [label=any] |
| | 35 | traitlets -> six [label=any] |
| | 36 | traitlets -> "ipython-genutils" [label=any] |
| | 37 | "text-unidecode" [label="text-unidecode |
| | 38 | 1.3"] |
| | 39 | SQLAlchemy [label="SQLAlchemy |
| | 40 | 1.3.10"] |
| | 41 | soupsieve [label="soupsieve |
| | 42 | 1.9.4"] |
| | 43 | setuptools [label="setuptools |
| | 44 | 41.0.1"] |
| | 45 | selenium [label="selenium |
| | 46 | 3.141.0"] |
| | 47 | selenium -> urllib3 [label=any] |
| | 48 | "selenium-wire" [label="selenium-wire |
| | 49 | 1.0.10"] |
| | 50 | "selenium-wire" -> selenium [label=">=3.4.0"] |
| | 51 | retrying [label="retrying |
| | 52 | 1.3.3"] |
| | 53 | retrying -> six [label=">=1.7.0"] |
| | 54 | pytz [label="pytz |
| | 55 | 2019.3"] |
| | 56 | pytimeparse [label="pytimeparse |
| | 57 | 1.1.8"] |
| | 58 | "python-slugify" [label="python-slugify |
| | 59 | 3.0.6"] |
| | 60 | "python-slugify" -> "text-unidecode" [label=">=1.3"] |
| | 61 | "python-dateutil" [label="python-dateutil |
| | 62 | 2.8.0"] |
| | 63 | "python-dateutil" -> six [label=">=1.5"] |
| | 64 | pyparsing [label="pyparsing |
| | 65 | 2.4.2"] |
| | 66 | pylint [label="pylint |
| | 67 | 2.4.2"] |
| | 68 | pylint -> mccabe [label=">=0.6,<0.7"] |
| | 69 | pylint -> isort [label=">=4.2.5,<5"] |
| | 70 | pylint -> astroid [label=">=2.3.0,<2.4"] |
| | 71 | Pygments [label="Pygments |
| | 72 | 2.4.2"] |
| | 73 | ptyprocess [label="ptyprocess |
| | 74 | 0.6.0"] |
| | 75 | "prompt-toolkit" [label="prompt-toolkit |
| | 76 | 2.0.10"] |
| | 77 | "prompt-toolkit" -> wcwidth [label=any] |
| | 78 | "prompt-toolkit" -> six [label=">=1.9.0"] |
| | 79 | plotly [label="plotly |
| | 80 | 4.2.1"] |
| | 81 | plotly -> six [label=any] |
| | 82 | plotly -> retrying [label=">=1.3.3"] |
| | 83 | pipdeptree [label="pipdeptree |
| | 84 | 0.13.2"] |
| | 85 | pipdeptree -> pip [label=">=6.0.0"] |
| | 86 | pip [label="pip |
| | 87 | 19.1.1"] |
| | 88 | pickleshare [label="pickleshare |
| | 89 | 0.7.5"] |
| | 90 | pexpect [label="pexpect |
| | 91 | 4.7.0"] |
| | 92 | pexpect -> ptyprocess [label=">=0.5"] |
| | 93 | parso [label="parso |
| | 94 | 0.5.1"] |
| | 95 | parsedatetime [label="parsedatetime |
| | 96 | 2.4"] |
| | 97 | parsedatetime -> future [label=any] |
| | 98 | pandas [label="pandas |
| | 99 | 0.25.2"] |
| | 100 | pandas -> numpy [label=">=1.13.3"] |
| | 101 | pandas -> "python-dateutil" [label=">=2.6.1"] |
| | 102 | pandas -> pytz [label=">=2017.2"] |
| | 103 | openpyxl [label="openpyxl |
| | 104 | 3.0.0"] |
| | 105 | openpyxl -> "et-xmlfile" [label=any] |
| | 106 | openpyxl -> jdcal [label=any] |
| | 107 | numpy [label="numpy |
| | 108 | 1.17.3"] |
| | 109 | networkx [label="networkx |
| | 110 | 2.4"] |
| | 111 | networkx -> decorator [label=">=4.3.0"] |
| | 112 | mccabe [label="mccabe |
| | 113 | 0.6.1"] |
| | 114 | matplotlib [label="matplotlib |
| | 115 | 3.1.1"] |
| | 116 | matplotlib -> pyparsing [label=">=2.0.1,!=2.1.6,!=2.1.2,!=2.0.4"] |
| | 117 | matplotlib -> kiwisolver [label=">=1.0.1"] |
| | 118 | matplotlib -> numpy [label=">=1.11"] |
| | 119 | matplotlib -> "python-dateutil" [label=">=2.1"] |
| | 120 | matplotlib -> cycler [label=">=0.10"] |
| | 121 | MarkupSafe [label="MarkupSafe |
| | 122 | 1.1.1"] |
| | 123 | lxml [label="lxml |
| | 124 | 4.4.1"] |
| | 125 | leather [label="leather |
| | 126 | 0.3.3"] |
| | 127 | leather -> six [label=">=1.6.1"] |
| | 128 | "lazy-object-proxy" [label="lazy-object-proxy |
| | 129 | 1.4.2"] |
| | 130 | kiwisolver [label="kiwisolver |
| | 131 | 1.1.0"] |
| | 132 | kiwisolver -> setuptools [label=any] |
| | 133 | Jinja2 [label="Jinja2 |
| | 134 | 2.10.3"] |
| | 135 | Jinja2 -> MarkupSafe [label=">=0.23"] |
| | 136 | jedi [label="jedi |
| | 137 | 0.15.1"] |
| | 138 | jedi -> parso [label=">=0.5.0"] |
| | 139 | jdcal [label="jdcal |
| | 140 | 1.4.1"] |
| | 141 | itsdangerous [label="itsdangerous |
| | 142 | 1.1.0"] |
| | 143 | isort [label="isort |
| | 144 | 4.3.21"] |
| | 145 | isodate [label="isodate |
| | 146 | 0.6.0"] |
| | 147 | isodate -> six [label=any] |
| | 148 | ipython [label="ipython |
| | 149 | 7.8.0"] |
| | 150 | ipython -> decorator [label=any] |
| | 151 | ipython -> pickleshare [label=any] |
| | 152 | ipython -> setuptools [label=">=18.5"] |
| | 153 | ipython -> pygments [label=any] |
| | 154 | ipython -> backcall [label=any] |
| | 155 | ipython -> traitlets [label=">=4.2"] |
| | 156 | ipython -> pexpect [label=any] |
| | 157 | ipython -> jedi [label=">=0.10"] |
| | 158 | ipython -> "prompt-toolkit" [label=">=2.0.0,<2.1.0"] |
| | 159 | ipython -> appnope [label=any] |
| | 160 | "ipython-genutils" [label="ipython-genutils |
| | 161 | 0.2.0"] |
| | 162 | graphviz [label="graphviz |
| | 163 | 0.13"] |
| | 164 | future [label="future |
| | 165 | 0.18.0"] |
| | 166 | Flask [label="Flask |
| | 167 | 1.1.1"] |
| | 168 | Flask -> itsdangerous [label=">=0.24"] |
| | 169 | Flask -> Werkzeug [label=">=0.15"] |
| | 170 | Flask -> Jinja2 [label=">=2.10.1"] |
| | 171 | Flask -> click [label=">=5.1"] |
| | 172 | "Flask-Compress" [label="Flask-Compress |
| | 173 | 1.4.0"] |
| | 174 | "Flask-Compress" -> Flask [label=any] |
| | 175 | "et-xmlfile" [label="et-xmlfile |
| | 176 | 1.0.1"] |
| | 177 | decorator [label="decorator |
| | 178 | 4.4.0"] |
| | 179 | dbfread [label="dbfread |
| | 180 | 2.0.7"] |
| | 181 | dash [label="dash |
| | 182 | 1.4.1"] |
| | 183 | dash -> "dash-table" [label="==4.4.1"] |
| | 184 | dash -> plotly [label=any] |
| | 185 | dash -> "flask-compress" [label=any] |
| | 186 | dash -> "dash-core-components" [label="==1.3.1"] |
| | 187 | dash -> "dash-html-components" [label="==1.0.1"] |
| | 188 | dash -> "dash-renderer" [label="==1.1.2"] |
| | 189 | dash -> Flask [label=">=1.0.2"] |
| | 190 | dash -> future [label=any] |
| | 191 | "dash-table" [label="dash-table |
| | 192 | 4.4.1"] |
| | 193 | "dash-renderer" [label="dash-renderer |
| | 194 | 1.1.2"] |
| | 195 | "dash-html-components" [label="dash-html-components |
| | 196 | 1.0.1"] |
| | 197 | "dash-daq" [label="dash-daq |
| | 198 | 0.2.1"] |
| | 199 | "dash-daq" -> dash [label=">=1.0.0"] |
| | 200 | "dash-core-components" [label="dash-core-components |
| | 201 | 1.3.1"] |
| | 202 | cycler [label="cycler |
| | 203 | 0.10.0"] |
| | 204 | cycler -> six [label=any] |
| | 205 | csvkit [label="csvkit |
| | 206 | 1.0.4"] |
| | 207 | csvkit -> six [label=">=1.6.1"] |
| | 208 | csvkit -> "agate-sql" [label=">=0.5.3"] |
| | 209 | csvkit -> "agate-excel" [label=">=0.2.2"] |
| | 210 | csvkit -> agate [label=">=1.6.1"] |
| | 211 | csvkit -> "agate-dbf" [label=">=0.2.0"] |
| | 212 | Click [label="Click |
| | 213 | 7.0"] |
| | 214 | bs4 [label="bs4 |
| | 215 | 0.0.1"] |
| | 216 | bs4 -> beautifulsoup4 [label=any] |
| | 217 | beautifulsoup4 [label="beautifulsoup4 |
| | 218 | 4.8.1"] |
| | 219 | beautifulsoup4 -> soupsieve [label=">=1.2"] |
| | 220 | backcall [label="backcall |
| | 221 | 0.1.0"] |
| | 222 | Babel [label="Babel |
| | 223 | 2.7.0"] |
| | 224 | Babel -> pytz [label=">=2015.7"] |
| | 225 | astroid [label="astroid |
| | 226 | 2.3.1"] |
| | 227 | astroid -> six [label="==1.12"] |
| | 228 | astroid -> "lazy-object-proxy" [label="==1.4.*"] |
| | 229 | astroid -> "typed-ast" [label=">=1.4.0,<1.5"] |
| | 230 | astroid -> wrapt [label="==1.11.*"] |
| | 231 | appnope [label="appnope |
| | 232 | 0.1.0"] |
| | 233 | agate [label="agate |
| | 234 | 1.6.1"] |
| | 235 | agate -> Babel [label=">=2.0"] |
| | 236 | agate -> six [label=">=1.9.0"] |
| | 237 | agate -> isodate [label=">=0.5.4"] |
| | 238 | agate -> "python-slugify" [label=">=1.2.1"] |
| | 239 | agate -> pytimeparse [label=">=1.1.5"] |
| | 240 | agate -> parsedatetime [label=">=2.1"] |
| | 241 | agate -> leather [label=">=0.3.2"] |
| | 242 | "agate-sql" [label="agate-sql |
| | 243 | 0.5.4"] |
| | 244 | "agate-sql" -> sqlalchemy [label=">=1.0.8"] |
| | 245 | "agate-sql" -> agate [label=">=1.5.0"] |
| | 246 | "agate-excel" [label="agate-excel |
| | 247 | 0.2.3"] |
| | 248 | "agate-excel" -> xlrd [label=">=0.9.4"] |
| | 249 | "agate-excel" -> openpyxl [label=">=2.3.0"] |
| | 250 | "agate-excel" -> agate [label=">=1.5.0"] |
| | 251 | "agate-dbf" [label="agate-dbf |
| | 252 | 0.2.1"] |
| | 253 | "agate-dbf" -> dbfread [label=">=2.0.5"] |
| | 254 | "agate-dbf" -> agate [label=">=1.5.0"] |
| | 255 | six [label="six |
| | 256 | 1.12.0"] |
| | 257 | protobuf [label="protobuf |
| | 258 | 3.10.0"] |
| | 259 | protobuf -> six [label=">=1.9"] |
| | 260 | protobuf -> setuptools [label=any] |
| | 261 | } |
| | 262 | }}} |